70 votes

Comment faire fonctionner ipywidgets dans Jupyter Lab ?

Dans Jupyter Notebook, les ipywidgets fonctionnent bien, mais ils ne semblent pas fonctionner dans Jupyter Lab (qui est censé être meilleur que Notebook).

J'ai suivi ces directions .

Étape 1 : Installé Node.js ( https://nodejs.org/en/ )

Étape 2 : Exigences installées sur Python 3 avec conda :

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

Malheureusement, les widgets de base ne fonctionnent pas dans le carnet de notes de jupyter lab :

enter image description here

0 votes

Il est également utile de consulter la console javascript du navigateur.

0 votes

Quelles versions avez-vous essayées ?

1 votes

Avez-vous redémarré le noyau s'il était déjà en cours d'exécution ?

82voto

scnerd Points 11

JupyterLab préfère désormais un modèle dans lequel le javascript arbitraire n'est plus autorisé pour être intégré dans la sortie d'une cellule, ce qui est la façon dont de nombreux modules interactifs de Jupyter Notebook fonctionnaient auparavant. Ils demandent maintenant que modules avec interactivité créer une extension JupyterLab . ipywidgets fournit @jupyter-widgets/jupyterlab-manager qui répond à cette exigence.

Si vous utilisez ipywidgets 7.6 ou une version plus récente dans JupyterLab 3.0 ou une version plus récente, vous n'avez rien à faire : c'est déjà fait. installé par défaut . Vous pouvez vérifier si cela est installé en exécutant :

jupyter labextension list

qui devrait inclure une ligne comme :

@jupyter-widgets/jupyterlab-manager v3.0.0 enabled OK (python, jupyterlab_widgets)

Si vous utilisez JupyterLab 1 ou 2 (ou une ancienne version de ipywidgets) vous devez installer cette extension manuellement en exécutant ceci sur votre ligne de commande (ce qui suppose que vous avez déjà NodeJS installé) :

jupyter labextension install @jupyter-widgets/jupyterlab-manager

1 votes

Cela a également permis de résoudre l'erreur suivante concernant le fait que la qgrid ne s'affiche pas, mais s'affiche seulement QgridWidget(grid_options={'fullWidthRows': True, 'syncColumnCellResize': True, . Je l'ai ajouté en commentaire pour faciliter la recherche, car aucune des autres solutions à cette erreur n'a fonctionné pour moi. Merci

0 votes

Cela n'a pas fonctionné pour moi - Erreur : Object 'jupyter.widget' not found in registry

0 votes

J'ai dû exécuter cette commande deux fois. Les deux fois, le résultat était identique - aucune erreur. Je suis presque sûr d'avoir tout redémarré correctement, mais qui sait ? Bizarre. YMMV.

16voto

4givN Points 599

J'ai eu le même pbm, et j'ai essayé cette solution (j'espère qu'elle pourra aider d'autres personnes) :

Le site jupyter labextension install @jupyter-widgets/jupyterlab-manager a donné ce genre d'erreur dans mon cas :

> /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

Alors, ce que j'ai fait, c'est d'utiliser une version antérieure 0.34 au lieu de 0.35 : jupyter labextension install @jupyter-widgets/jupyterlab-manager@0.34

En fait, selon este Parfois, les équipes ont le temps d'examiner la dernière version.

UP (selon les commentaires) : Vous pouvez vérifier jupyter lab --version et trouver une correspondance sur la compatibilité de sa version .

Et ça marche maintenant !

enter image description here

8 votes

On peut vérifier la version jupyter lab --version et trouver une correspondance sur ce compatibilité des versions .

0 votes

Ce commentaire est ma réponse préférée :).

0 votes

Cela n'a pas fonctionné pour moi - Erreur : Object 'jupyter.widget' not found in registry

9voto

rocksteady Points 106

J'ai eu le même problème, et ce qui a fonctionné pour moi aujourd'hui a été de lancer la commande "clean", comme mentionné ici : https://ipywidgets.readthedocs.io/en/latest/user_install.html#installing-the-jupyterlab-extension

Donc :

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

Et ça marche bien pour moi en ce moment.

7voto

Michael Parque Points 21

Note : la plupart des réponses ci-dessus sont périmées (au 19 juillet 2021). . Cela devrait être beaucoup plus transparent avec les dernières versions de ces paquets. Cependant, en 2021, j'ai eu un problème pour rendre panel widgets dans jupyterlab hébergé sur jupyterhub et je suis tombé sur ce billet. J'ai d'abord essayé quelques-unes de ces réponses, mais aucune n'a fonctionné. Après avoir creusé dans certaines des bibliothèques, j'ai trouvé ce qui suit :

  1. jupyter labextension install @jupyter-widgets/jupyterlab-manager n'est plus nécessaire à partir de ipywidgets==7.6 y jupyterlab>=3.0 . source . Si vous disposez de la dernière version de jupyterlab, il vous suffit d'installer ipywidgets et l'extension sera activée automatiquement tant que les auteurs de l'extension du widget sont aussi suivre quelques étapes .

    Le principal changement de cette version est que l'installation de la version 7.6.0 d'ipywidgets activera désormais automatiquement la prise en charge d'ipywidgets dans JupyterLab 3.0. L'utilisateur n'a pas à passer par une étape supplémentaire d'installation de JupyterLab, ni à reconstruire JupyterLab, et il n'a pas besoin d'installer Node.js. Il suffit d'installer le paquet python ipywidgets avec pip (pip install ipywidgets==7.6.0) ou conda/mamba (conda install -c conda-forge ipywidgets=7.6.0) et ipywidgets fonctionnera automatiquement dans le Jupyter Notebook classique et dans JupyterLab 3.0.

  2. panel a également suivi l'exemple et a regroupé les extensions nécessaires dans l'application pyviz_comms donc théoriquement tout devrait être inclus dans mon cas. source

    Dans l'environnement classique de Jupyter notebook et JupyterLab, assurez-vous d'abord de charger la fonction pn.extension(). Les objets du panneau se rendront alors eux-mêmes s'ils sont le dernier élément d'une cellule de notebook. Pour les versions de JupyterLab>=3.0, l'extension nécessaire est automatiquement incluse dans le paquet pyviz_comms, qui doit être >=2.0.

La réponse à mon problème s'est avérée être que j'installais panel après construire le serveur jupyterlab à travers jupyterhub. (par exemple, pour un notebook spécifique, un utilisateur exécutait !pip install panel ). C'est là que je deviens un peu confus, car je ne sais pas pourquoi cela ne fonctionne pas, étant donné que ipywidgets est déjà installé et panel inclut l'extension jupyterlab préconstruite. Cependant, j'ai pu résoudre mon problème en utilisant une image de jupyterlab à partir de jupyterhub qui avait ipywidgets>=7.6 y panel>=0.11.3 (et donc pyviz_comms>=2.0 ) pré-installé. Après cela, les widgets du panneau dans jupyterlab sur jupyterhub fonctionnent maintenant. J'espère que cela aidera toute personne ayant un problème similaire.

3voto

顏嘉儀 Points 21

J'ai le même problème que @jtlz2 : aucune des suggestions ci-dessus ne fonctionne pour moi, sauf la combinaison de versions très spécifique de @hainm pour jupyter-lab, ipywidgests, et jupyter-widgets/jupyterlab-manager.

Après les numéros de version initiaux indiqués dans ce billet ( https://github.com/jupyter-widgets/ipywidgets/issues/2488#issuecomment-509719214 ), j'ai essayé de trouver la combinaison de versions la plus récente qui fonctionne. Je les énumère ci-dessous, afin que chacun puisse l'essayer s'il n'y a vraiment rien d'autre qui fonctionne pour lui/elle.

pythonversion=3.8.0
labversion=2.1.5
labmanagerversion=2.0
ipywidgetsversion=7.5.1
nodejsversion=10.13.0

conda create -n lab python=$pythonversion -y
source activate lab
conda install nodejs=$nodejsversion -c conda-forge -y
conda install ipywidgets=$ipywidgetsversion -c conda-forge -y
conda install jupyterlab=$labversion  -y -c conda-forge
jupyter-labextension install @jupyter-widgets/jupyterlab-manager@$labmanagerversion

Il semble que la version de nodejs joue un rôle clé. Toutes choses égales par ailleurs, si je mets à jour la version de nodejs à 12.x+ ou à la dernière version 14.x, cette combinaison ainsi que la combinaison de @hainm ne parviennent pas à faire en sorte que ipywidgets se comporte normalement dans Jupyterlab.

Outre celle que j'ai indiquée dans la cellule de code ci-dessus, les 6 combinaisons suivantes fonctionnent également pour moi.

(pythonversion ,labversion ,labmanagerversion ,ipywidgets ,nodejsversion)

  1. (3.7 , 0.34 , 0.37 , 7.4.2 , 10.13)
  2. (3.7 , 1.0 , 1.0 , 7.4.2 , 10.13)
  3. (3.7 , 2.0 , 2.0 , 7.4.2 , 10.13)
  4. (3.8 , 2.0 , 2.0 , 7.4.2 , 10.13)
  5. (3.8 , 2.0 , 2.0 , 7.5.1 , 10.13)
  6. (3.8 , 2.1.5 , 2.0 , 7.5.1 , 10.13)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X