How to get ipywidgets working in Jupyter Lab?

2020-02-07 16:40发布

In Jupyter Notebook, ipywidgets work fine, however they seem to not work in Jupyter Lab (which is supposedly better than Notebook).

I followed these directions.

Step 1: Installed Node.js (https://nodejs.org/en/)

Step 2: Installed requirements on Python 3 with conda:

conda install -c conda-forge ipywidgets
jupyter labextension install @jupyter-widgets/jupyterlab-manager

Unfortunately, basic widgets do not work inside the jupyter lab notebook:

enter image description here

5条回答
够拽才男人
2楼-- · 2020-02-07 17:04

None of the other answers worked to me. It all seems to be down to version compatibility. Finally got it working - see below. All credit to @hainm on github (original link: https://github.com/jupyter-widgets/ipywidgets/issues/2488#issuecomment-509719214) My SO answer on this: https://stackoverflow.com/a/60059786/1021819 Here is a straight copy of that answer:

Leveraging https://github.com/jupyter-widgets/ipywidgets/issues/2488#issuecomment-509719214, in a jupyterlab terminal - running on jupyterhub - execute:

pythonversion=3.7
labversion=0.34.12
labmanagerversion=0.37.4
ipywidgetsversion=7.4.2

conda install ipywidgets=$ipywidgetsversion -c conda-forge -y --override-channels -c main
conda install jupyterlab=$labversion  -y -c conda-forge --override-channels -c main
jupyter-labextension install @jupyter-widgets/jupyterlab-manager@$labmanagerversion

At this point a jupyter lab clean; jupyter lab build might be of interest.

Then in a .ipynb notebook running in the same jupyterlab window, hit the restart kernel button.

IMPORTANT: Don't forget to also REFRESH the browser page - or all efforts will have been in vain . :\

Then execute the example:

from ipywidgets import interact

@interact(x=(0, 100, 10))
def p(x=50):
    pass

I never thought I would live to see the day but - hey presto - the widget finally appears!

The sad things are that the setup is extremely sensitive to the installation of other extensions and the combination of compatible versions is very specific.

enter image description here

查看更多
Lonely孤独者°
3楼-- · 2020-02-07 17:05

I had the same pbm, and tried this solution (hope it can help others):

The jupyter labextension install @jupyter-widgets/jupyterlab-manager gave this kind of error in my case:

> /Users/user/.nvm/versions/node/v8.7.0/bin/npm pack @jupyter-widgets/jupyterlab-manager
jupyter-widgets-jupyterlab-manager-0.35.0.tgz

Errored, use --debug for full output:
ValueError:
"@jupyter-widgets/jupyterlab-manager@0.35.0" is not compatible with the current JupyterLab
Conflicting Dependencies:
JupyterLab              Extension            Package
>=0.15.4-0 <0.16.0-0    >=0.16.0-0 <0.17.0-0 @jupyterlab/application
>=1.1.4-0 <2.0.0-0      >=2.0.0-0 <3.0.0-0   @jupyterlab/services
>=0.15.4-0 <0.16.0-0    >=0.16.0-0 <0.17.0-0 @jupyterlab/rendermime
>=0.15.4-0 <0.16.0-0    >=0.16.0-0 <0.17.0-0 @jupyterlab/notebook

Then, what I did is to use a previous version 0.34 instead of 0.35: jupyter labextension install @jupyter-widgets/jupyterlab-manager@0.34

In fact, according to this, sometime teams get time to consider the last version.

UP (according to comments): You can check jupyter lab --version and find match on its version compatibility.

And it works now !

enter image description here

查看更多
神经病院院长
4楼-- · 2020-02-07 17:09

JupyterLab now prefers a model where arbitrary javascript is no longer allowed to be embedded in a cell's output, which is how many interactive Jupyter Notebook modules used to work. They now ask that modules with interactivity create a JupyterLab extension. IPyWidgets has an extension that can be activated by running this on your command line (which assumes you already have NodeJS installed):

jupyter labextension install @jupyter-widgets/jupyterlab-manager
查看更多
乱世女痞
5楼-- · 2020-02-07 17:11

Had the same issue, and what worked for me today was running the 'clean' command, as mentioned here: https://ipywidgets.readthedocs.io/en/latest/user_install.html#installing-the-jupyterlab-extension

So:

jupyter lab clean
jupyter labextension install @jupyter-widgets/jupyterlab-manager

And that got it working right for me just now.

查看更多
Anthone
6楼-- · 2020-02-07 17:14

I was getting a Permission Denied error, so adding sudo to the accepted command helped: sudo jupyter labextension install @jupyter-widgets/jupyterlab-manager.

查看更多
登录 后发表回答