When executing the introduction example I get the following error:
AttributeError Traceback (most recent call last)
<ipython-input-5-78433f5ebfe2> in <module>
2 pn.extension()
3
----> 4 pn.interact(sine)
AttributeError: module 'panel' has no attribute 'interact'
# Name Version Build Channel
_ipyw_jlab_nb_ext_conf 0.1.0 py37_0
alabaster 0.7.12 py37_0
anaconda 2019.03 py37_0
anaconda-client 1.7.2 py37_0
anaconda-navigator 1.9.7 py37_0
anaconda-project 0.8.2 py37_0
appdirs 1.4.3 py37h28b3542_0
asn1crypto 0.24.0 py37_0
astroid 2.2.5 py37_0
astropy 3.1.2 py37h7b6447c_0
atomicwrites 1.3.0 py37_1
attrs 19.1.0 py37_1
autopep8 1.4.3 py37_0
babel 2.6.0 py37_0
backcall 0.1.0 py37_0
backports 1.0 py37_1
backports.os 0.1.1 py37_0
backports.shutil_get_terminal_size 1.0.0 py37_2
beautifulsoup4 4.7.1 py37_1
bitarray 0.8.3 py37h14c3975_0
bkcharts 0.2 py37_0
blas 1.0 mkl
bleach 3.1.0 py37_0
blosc 1.15.0 hd408876_0
bokeh 1.0.4 py37_0
boto 2.49.0 py37_0
bottleneck 1.2.1 py37h035aef0_1
bzip2 1.0.6 h14c3975_5
ca-certificates 2019.1.23 0
cairo 1.14.12 h8948797_3
certifi 2019.3.9 py37_0
cffi 1.12.2 py37h2e261b9_1
chardet 3.0.4 py37_1
click 7.0 py37_0
cloudpickle 0.8.0 py37_0
clyent 1.2.2 py37_1
colorama 0.4.1 py37_0
colorcet 2.0.1 py_0 pyviz
conda 4.6.14 py37_0
conda-build 3.17.8 py37_0
conda-env 2.6.0 1
conda-verify 3.1.1 py37_0
contextlib2 0.5.5 py37_0
cryptography 2.6.1 py37h1ba5d50_0
curl 7.64.0 hbc83047_2
cycler 0.10.0 py37_0
cython 0.29.6 py37he6710b0_0
cytoolz 0.9.0.1 py37h14c3975_1
dask 1.1.4 py37_1
dask-core 1.1.4 py37_1
datashader 0.6.8 py_0 pyviz
datashape 0.5.4 py37_1
dbus 1.13.6 h746ee38_0
decorator 4.4.0 py37_1
defusedxml 0.5.0 py37_1
distributed 1.26.0 py37_1
docutils 0.14 py37_0
entrypoints 0.3 py37_0
et_xmlfile 1.0.1 py37_0
expat 2.2.6 he6710b0_0
fastcache 1.0.2 py37h14c3975_2
filelock 3.0.10 py37_0
flask 1.0.2 py37_1
fontconfig 2.13.0 h9420a91_0
freetype 2.9.1 h8a8886c_1
fribidi 1.0.5 h7b6447c_0
future 0.17.1 py37_0
get_terminal_size 1.0.0 haa9412d_0
gevent 1.4.0 py37h7b6447c_0
glib 2.56.2 hd408876_0
glob2 0.6 py37_1
gmp 6.1.2 h6c8ec71_1
gmpy2 2.0.8 py37h10f8cd9_2
graphite2 1.3.13 h23475e2_0
greenlet 0.4.15 py37h7b6447c_0
gst-plugins-base 1.14.0 hbbd80ab_1
gstreamer 1.14.0 hb453b48_1
h5py 2.9.0 py37h7918eee_0
harfbuzz 1.8.8 hffaf4a1_0
hdf5 1.10.4 hb1b8bf9_0
heapdict 1.0.0 py37_2
holoviews 1.11.0 pyh39e3cac_0 pyviz
html5lib 1.0.1 py37_0
hvplot 0.4.0 py_0 pyviz
icu 58.2 h9c2bf20_1
idna 2.8 py37_0
imageio 2.5.0 py37_0
imagesize 1.1.0 py37_0
importlib_metadata 0.8 py37_0
intake 0.4.2 py_0
intel-openmp 2019.3 199
ipaddress 1.0.22 pypi_0 pypi
ipykernel 5.1.0 py37h39e3cac_0
ipython 7.4.0 py37h39e3cac_0
ipython_genutils 0.2.0 py37_0
ipywidgets 7.4.2 py37_0
isort 4.3.16 py37_0
itsdangerous 1.1.0 py37_0
jbig 2.1 hdba287a_0
jdcal 1.4 py37_0
jedi 0.13.3 py37_0
jeepney 0.4 py37_0
jinja2 2.10 py37_0
jpeg 9b h024ee3a_2
jsonschema 3.0.1 py37_0
jupyter 1.0.0 py37_7
jupyter_client 5.2.4 py37_0
jupyter_console 6.0.0 py37_0
jupyter_core 4.4.0 py37_0
jupyterlab 0.35.4 py37hf63ae98_0
jupyterlab_server 0.2.0 py37_0
keyring 18.0.0 py37_0
kiwisolver 1.0.1 py37hf484d3e_0
krb5 1.16.1 h173b8e3_7
lazy-object-proxy 1.3.1 py37h14c3975_2
libarchive 3.3.3 h5d8350f_5
libcurl 7.64.0 h20c2e04_2
libedit 3.1.20181209 hc058e9b_0
libffi 3.2.1 hd88cf55_4
libgcc-ng 8.2.0 hdf63c60_1
libgfortran-ng 7.3.0 hdf63c60_0
liblief 0.9.0 h7725739_2
libpng 1.6.36 hbc83047_0
libsodium 1.0.16 h1bed415_0
libssh2 1.8.0 h1ba5d50_4
libstdcxx-ng 8.2.0 hdf63c60_1
libtiff 4.0.10 h2733197_2
libtool 2.4.6 h7b6447c_5
libuuid 1.0.3 h1bed415_2
libxcb 1.13 h1bed415_1
libxml2 2.9.9 he19cac6_0
libxslt 1.1.33 h7d1a2b0_0
llvmlite 0.28.0 py37hd408876_0
locket 0.2.0 py37_1
lxml 4.3.2 py37hefd8a0e_0
lz4-c 1.8.1.2 h14c3975_0
lzo 2.10 h49e0be7_2
markupsafe 1.1.1 py37h7b6447c_0
matplotlib 3.0.3 py37h5429711_0
mccabe 0.6.1 py37_1
mistune 0.8.4 py37h7b6447c_0
mkl 2019.3 199
mkl-service 1.1.2 py37he904b0f_5
mkl_fft 1.0.10 py37ha843d7b_0
mkl_random 1.0.2 py37hd81dba3_0
more-itertools 6.0.0 py37_0
mpc 1.1.0 h10f8cd9_1
mpfr 4.0.1 hdf1c602_3
mpmath 1.1.0 py37_0
msgpack-numpy 0.4.4.2 py37_0
msgpack-python 0.6.1 py37hfd86e86_1
multipledispatch 0.6.0 py37_0
navigator-updater 0.2.1 py37_0
nbconvert 5.4.1 py37_3
nbformat 4.4.0 py37_0
ncurses 6.1 he6710b0_1
neobolt 1.7.4 pypi_0 pypi
neotime 1.7.4 pypi_0 pypi
networkx 2.2 py37_1
nltk 3.4 py37_1
nose 1.3.7 py37_2
notebook 5.7.8 py37_0
numba 0.43.1 py37h962f231_0
numexpr 2.6.9 py37h9e4a6bb_0
numpy 1.16.2 py37h7e9f1db_0
numpy-base 1.16.2 py37hde5b4d6_0
numpydoc 0.8.0 py37_0
olefile 0.46 py37_0
openpyxl 2.6.1 py37_1
openssl 1.1.1b h7b6447c_1
packaging 19.0 py37_0
pandas 0.24.2 py37he6710b0_0
pandoc 2.2.3.2 0
pandocfilters 1.4.2 py37_1
panel 0.1.0a3 py_0 pyviz
pango 1.42.4 h049681c_0
param 1.9.0 py_0 pyviz
parso 0.3.4 py37_0
partd 0.3.10 py37_1
patchelf 0.9 he6710b0_3
path.py 11.5.0 py37_0
pathlib2 2.3.3 py37_0
patsy 0.5.1 py37_0
pcre 8.43 he6710b0_0
pep8 1.7.1 py37_0
pexpect 4.6.0 py37_0
pickleshare 0.7.5 py37_0
pillow 5.4.1 py37h34e0f95_0
pip 19.0.3 py37_0
pixman 0.38.0 h7b6447c_0
pkginfo 1.5.0.1 py37_0
pluggy 0.9.0 py37_0
ply 3.11 py37_0
prometheus_client 0.6.0 py37_0
prompt_toolkit 2.0.9 py37_0
psutil 5.6.1 py37h7b6447c_0
ptyprocess 0.6.0 py37_0
py 1.8.0 py37_0
py-lief 0.9.0 py37h7725739_2
py2neo 4.2.0 pypi_0 pypi
pycodestyle 2.5.0 py37_0
pycosat 0.6.3 py37h14c3975_0
pycparser 2.19 py37_0
pycrypto 2.6.1 py37h14c3975_9
pyct 0.4.6 py_0 pyviz
pyct-core 0.4.6 py_0 pyviz
pycurl 7.43.0.2 py37h1ba5d50_0
pyflakes 2.1.1 py37_0
pygments 2.3.1 py37_0
pylint 2.3.1 py37_0
pyodbc 4.0.26 py37he6710b0_0
pyopenssl 19.0.0 py37_0
pyparsing 2.3.1 py37_0
pyqt 5.9.2 py37h05f1152_2
pyrsistent 0.14.11 py37h7b6447c_0
pysocks 1.6.8 py37_0
pytables 3.5.1 py37h71ec239_0
pytest 4.3.1 py37_0
pytest-arraydiff 0.3 py37h39e3cac_0
pytest-astropy 0.5.0 py37_0
pytest-doctestplus 0.3.0 py37_0
pytest-openfiles 0.3.2 py37_0
pytest-remotedata 0.3.1 py37_0
python 3.7.3 h0371630_0
python-dateutil 2.8.0 py37_0
python-libarchive-c 2.8 py37_6
python-snappy 0.5.3 py37he6710b0_0
pytz 2018.9 py37_0
pyviz_comms 0.7.2 py_0 pyviz
pywavelets 1.0.2 py37hdd07704_0
pyyaml 5.1 py37h7b6447c_0
pyzmq 18.0.0 py37he6710b0_0
qt 5.9.7 h5867ecd_1
qtawesome 0.5.7 py37_1
qtconsole 4.4.3 py37_0
qtpy 1.7.0 py37_1
readline 7.0 h7b6447c_5
requests 2.21.0 py37_0
rope 0.12.0 py37_0
ruamel_yaml 0.15.46 py37h14c3975_0
scikit-image 0.14.2 py37he6710b0_0
scikit-learn 0.20.3 py37hd81dba3_0
scipy 1.2.1 py37h7c811a0_0
seaborn 0.9.0 py37_0
secretstorage 3.1.1 py37_0
send2trash 1.5.0 py37_0
setuptools 40.8.0 py37_0
simplegeneric 0.8.1 py37_2
singledispatch 3.4.0.3 py37_0
sip 4.19.8 py37hf484d3e_0
six 1.12.0 py37_0
snappy 1.1.7 hbae5bb6_3
snowballstemmer 1.2.1 py37_0
sortedcollections 1.1.2 py37_0
sortedcontainers 2.1.0 py37_0
soupsieve 1.8 py37_0
sphinx 1.8.5 py37_0
sphinxcontrib 1.0 py37_1
sphinxcontrib-websupport 1.1.0 py37_1
spyder 3.3.3 py37_0
spyder-kernels 0.4.2 py37_0
sqlalchemy 1.3.1 py37h7b6447c_0
sqlite 3.27.2 h7b6447c_0
statsmodels 0.9.0 py37h035aef0_0
sympy 1.3 py37_0
tblib 1.3.2 py37_0
terminado 0.8.1 py37_1
testpath 0.4.2 py37_0
tk 8.6.8 hbc83047_0
toolz 0.9.0 py37_0
tornado 6.0.2 py37h7b6447c_0
tqdm 4.31.1 py37_1
traitlets 4.3.2 py37_0
unicodecsv 0.14.1 py37_0
unixodbc 2.3.7 h14c3975_0
urllib3 1.24.1 py37_0
wcwidth 0.1.7 py37_0
webencodings 0.5.1 py37_1
werkzeug 0.14.1 py37_0
wheel 0.33.1 py37_0
widgetsnbextension 3.4.2 py37_0
wrapt 1.11.1 py37h7b6447c_0
wurlitzer 1.0.2 py37_0
xarray 0.11.3 py37_0
xlrd 1.2.0 py37_0
xlsxwriter 1.1.5 py37_0
xlwt 1.3.0 py37_0
xz 5.2.4 h14c3975_4
yaml 0.1.7 had09818_2
zeromq 4.3.1 he6710b0_3
zict 0.1.4 py37_0
zipp 0.3.3 py37_1
zlib 1.2.11 h7b6447c_3
zstd 1.3.7 h0b5b093_0
The current version of Panel is 0.5.1, and you should upgrade to it if you want to use interact. So that we can avoid others having the same problem, how did you end up with 0.1.0a3, which is many releases behind at this point (and not even an actual release!)?
Oh, good catch!
I just used conda install -c pyviz panel. Maybe there are some conflicting packages?
I had the same problem when I tried to install panel to a colleague on an anaconda installation. I tried to install it on the base environment of a new conda. I never found how to solve it since I use only pip in my own computers
I think there are probably two problems here, then. First is that alpha releases somehow made it onto the main pyviz channel:

Second is that somehow your environment is not allowing the installation of later versions of panel, perhaps because you have some packages pinned. We can fix the first problem by removing those bogus alpha packages so that they are never selected. The second problem is likely not up to us to address, but to do with other packages that conflict with panel's requirements.
@philippjfr, is there any reason to keep the main label on the a2 and a3 packages? Somehow conda has installed 0.1.0a3 667 times!
No I'll remove those tonight.
maybe this is also interesting:
conda install -c pyviz panel==0.5.1
Collecting package metadata: done
Solving environment: done
## Package Plan ##
environment location: /home/dario/anaconda3
added / updated specs:
- panel==0.5.1
The following packages will be downloaded:
package | build
---------------------------|-----------------
bokeh-1.1.0 | py37_0 6.3 MB
holoviews-1.12.1 | py_0 3.2 MB pyviz
markdown-3.1 | py37_0 113 KB
panel-0.5.1 | py_0 279 KB pyviz
testpath-0.3.1 | py37_0 90 KB
------------------------------------------------------------
Total: 10.0 MB
The following NEW packages will be INSTALLED:
markdown pkgs/main/linux-64::markdown-3.1-py37_0
The following packages will be REMOVED:
anaconda-2019.03-py37_0
The following packages will be UPDATED:
bokeh 1.0.4-py37_0 --> 1.1.0-py37_0
holoviews 1.11.0-pyh39e3cac_0 --> 1.12.1-py_0
panel 0.1.0a3-py_0 --> 0.5.1-py_0
The following packages will be DOWNGRADED:
testpath 0.4.2-py37_0 --> 0.3.1-py37_0
Proceed ([y]/n)?
That seems like a reasonable installation plan to me, though I don't know what "anaconda-2019.03-py37_0" achieves; maybe it was pinning a bokeh version.
That package was also conflicting with spacy. Maybe there is some issue with the current anaconda release.
Installing panel 0.5.1 fixed the original problem, though.
I really love the whole pyviz endeavor, btw! Thank you, guys! :)
The anaconda package is a metapackage which specifies exact versions of a number of commonly used data science libraries which are tested for compatibility. Each anaconda version specifies a set of library versions which were available at the time of the anaconda release . Since these version are fixed in the anaconda package it is expected that upgrading one of these libraries will require the removal of the anaconda package. In this particular case, the anaconda 2019.03 package requires bokeh 1.0.4 so upgrading this package requires removing anaconda. This is fine, all the other libraries are still available.
@jjhelmus, thanks for the explanation! In this case, it sounds like having the anaconda package installed makes conda prefer an ancient version of panel (nine releases behind the current version), because that ancient version failed to specify what bokeh version it requires, and thus could be installed without requiring changing the bokeh version and thus forcing removal of anaconda.
We'll fix that at our end by removing the older panel packages, and maybe that's the only fix needed.
Still, it seems like very unintuitive behavior for an explicit user action of conda install -c pyviz panel. If I as a user explicitly request a package, I would typically expect to get the latest release without having to think much about it, or at least a recent release. Maybe that's not possible to achieve without violating some other conda behavior, but perhaps the anaconda package and some other metapackages could somehow be marked as having a very low priority to remain installed?
I'd want our pyviz metapackage to behave the same way -- install a consistent set of packages when it's first installed, but if someone explicitly installs a later package that forces upgrades, quickly decide to remove the pyviz metapackage while leaving the rest in place, so that you do what the user asked. But I can easily imagine other metapackages that would want to behave differently, rigidly ensuring a set of matched packages and never getting removed automatically, so there may be no simple way around this behavior.
Maybe there could at least be a big warning when falling back to such an outdated release, along with an explanation of why that was forced? I know that's a lot of logic and reasoning to ask for, though...
Still, it seems like very unintuitive behavior for an explicit user action of
conda install -c pyviz panel. If I as a user explicitly request a package, I would typically expect to get the latest release without having to think much about it, or at least a recent release.
This is the behavior of conda, the version of packages specified on the command line are maximized given the current channel priority and satisfiability conditions prior to other solver optimization. I am not sure how the older version of panel was installed into the environment @fedario described. When I create an environment with anaconda 2019.03 and then install panel from the pyviz channel I get the latest version, 0.5.1:
~$ conda create -n test anaconda=2019.03
Collecting package metadata: done
Solving environment: done
## Package Plan ##
environment location: /home/jhelmus/anaconda3/envs/test
added / updated specs:
- anaconda=2019.03
...
~$ conda activate test
(test) ~$ conda install -c pyviz panel
Collecting package metadata: done
Solving environment: done
## Package Plan ##
environment location: /home/jhelmus/anaconda3/envs/test
added / updated specs:
- panel
The following packages will be downloaded:
package | build
---------------------------|-----------------
bokeh-1.1.0 | py37_0 6.3 MB defaults
markdown-3.1 | py37_0 113 KB defaults
panel-0.5.1 | py_0 279 KB pyviz
param-1.9.0 | py_0 75 KB pyviz
pyct-0.4.6 | py_0 3 KB pyviz
pyct-core-0.4.6 | py_0 12 KB pyviz
pyviz_comms-0.7.2 | py_0 10 KB pyviz
testpath-0.3.1 | py37_0 90 KB defaults
------------------------------------------------------------
Total: 6.9 MB
The following NEW packages will be INSTALLED:
markdown pkgs/main/linux-64::markdown-3.1-py37_0
panel pyviz/noarch::panel-0.5.1-py_0
param pyviz/noarch::param-1.9.0-py_0
pyct pyviz/noarch::pyct-0.4.6-py_0
pyct-core pyviz/noarch::pyct-core-0.4.6-py_0
pyviz_comms pyviz/noarch::pyviz_comms-0.7.2-py_0
The following packages will be REMOVED:
anaconda-2019.03-py37_0
The following packages will be UPDATED:
bokeh 1.0.4-py37_0 --> 1.1.0-py37_0
The following packages will be DOWNGRADED:
testpath 0.4.2-py37_0 --> 0.3.1-py37_0
testpath is downgraded as panel 0.5.1 restricts the package to <0.4. Is there something unexpected in this behavior?
I did find that conda install -c pyviz pyviz requires a downgrade to Python 3.6. My guess is that there is a requirement that is missing or in conflict that prevent Python 3.7 from being used. I'll investigate this further.
We usually pin the pyviz package very precisely to ensure that everyone has very similar packages when we run tutorials. We will update the pyviz package to latest versions very soon and unpin 3.6, so I don't think you need to investigate further.
We'll take care of pyviz, but this issue is really about panel.
@jjhelmus, it looks like @philippjfr removed the bogus main label from the alpha packages panel-0.1.0a3 and panel-0.1.0a2 last night as I requested. From your results today, it looks like that change did fix this specific issue, as I had expected it would; users now get the latest panel because there's no distracting older version of panel without a conflicting pin of bokeh. That's great, and this specific issue is now gone for us.
Still, that's just a local fix for panel, and it seems like the same problem will occur for _any_ package that has ancient versions not pinning something in Anaconda Distribution, and current versions that do pin in a way that conflicts with the installed Anaconda Distribution.
Still, that's just a local fix for
panel, and it seems like the same problem will occur for _any_ package that has ancient versions not pinning something in Anaconda Distribution, and current versions that do pin in a way that conflicts with the installed Anaconda Distribution.
Although not specific to the anaconda package, conda will prefer a lower package version if that version it compatible with the packages already installed in the environment and the newer version requires changes to the existing packages. In these types of cases it can be difficult to determine the behavior a user would prefer, some users want conda to make the fewest changes to the environment necessary to install the new package, others want newer versions at the expense of changing more packages in the environment. Conda provide flags which can be used to control some of this behavior. In particular --update-deps will update the dependencies of the package(s) specified on the command line which should result in installation of the latest version in (nearly?) all cases.
@jjhelmus, thanks for the background. I guess I'm wishing that packages installed with the anaconda-2019.03 metapackage not be considered precious compared to the package the user explicitly requested from the command line, i.e. not to consider such "came for free" packages to be needing to be preserved by default, compared to ones the user previously explicitly requested or were dependencies of some real package they user explicitly requested (not just something that came with the base distribution). Sure, a user can explicitly add --update-deps, but it's hard to see how they will realize they need to do that; conda will just happily install an ancient version and they'll run into problems as found here. But that's an extra level of complexity to add to conda just to try to get it to behave more reasonably in cases like this, and surely would cause some other unreasonable behavior, so it seems unlikely to be feasible. I guess we'll just try to make sure that the packages we use don't have any ancient, dependency-less versions hanging around for the unwary.