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 ?

3voto

David Albrecht Points 41

Je recevais un Permission Denied donc ajouter sudo à la commande acceptée aidé : sudo jupyter labextension install @jupyter-widgets/jupyterlab-manager .

2voto

Iman Irajian Points 152

Selon ipywidgets.readthedocs.io la documentation ( Installation de l'extension JupyterLab ), pour " JupyterLab "Effectuez les étapes suivantes dans " Anaconda Prompt ".

Étape 1

conda install -c conda-forge nodejs

Étape 2

jupyter labextension install @jupyter-widgets/jupyterlab-manager

1voto

user1021819 Points 372

Aucune des autres réponses n'a fonctionné pour moi. Il semble que tout soit lié à la compatibilité des versions. J'ai finalement réussi à le faire fonctionner - voir ci-dessous. Tout le mérite revient à @hainm sur github (lien original : https://github.com/jupyter-widgets/ipywidgets/issues/2488#issuecomment-509719214 ) Ma réponse SO à ce sujet : https://stackoverflow.com/a/60059786/1021819 Voici une copie conforme de cette réponse :

Tirer parti de https://github.com/jupyter-widgets/ipywidgets/issues/2488#issuecomment-509719214 dans un terminal de jupyterlab - fonctionnant sur jupyterhub - exécutez :

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

A ce stade, un jupyter lab clean; jupyter lab build pourrait vous intéresser.

Ensuite, dans un notebook .ipynb exécuté dans la même fenêtre de jupyterlab, cliquez sur le bouton "Restart kernel".

IMPORTANT : N'oubliez pas non plus REFRESH la page du navigateur - ou tous les efforts auront été vains :-)

Ensuite, exécutez l'exemple :

from ipywidgets import interact

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

Je n'ai jamais pensé que je vivrais pour voir ce jour mais - hey presto - le widget apparaît enfin !

Ce qui est triste, c'est que la configuration est extrêmement sensible à l'installation d'autres extensions et que la combinaison des versions compatibles est très spécifique.

enter image description here

0voto

RGD2 Points 189

Si vous êtes sous linux et vous préférez éviter complètement Conda et utiliser des environnements virtuels (venvs) pour satisfaire python, ET il se trouve que vous utilisez un système d'exploitation basé sur Debian "ancien"/LTS, qui n'a peut-être pas la dernière version de nodejs : par exemple, Ubuntu 16.04 LTS, qui ne dispose pas d'une version de nodejs. node mais plutôt nodejs ( node appartient à un autre paquet, et la version 'legacy nodejs' est trop ancienne), alors lisez la suite.

Este es un peu plus compliqué à configurer, mais beaucoup plus facile à maintenir à long terme que Conda. (vous pouvez toujours créer un nouveau venv pour un nouveau projet, sans casser vos anciens projets).

Les points principaux sont :

  • utiliser les PPA pour obtenir des versions récentes des éléments dont vous avez besoin
  • Utilisez virtualenvwrapper pour pouvoir le faire :
    • utiliser un python3 à jour
    • éviter d'abîmer vos "pip install".
    • éviter de confondre le gestionnaire de paquets du système
    • travailler aussi facilement avec des personnes ayant des versions différentes de python
    • suivre les meilleures pratiques en matière de python
    • ont facilement des venvs différents qui peuvent avoir des paquets python et pip anciens ou incompatibles.
  • Utilisez Distributions binaires Nodejs
    • besoin de node.js version "10.x" pour les widgets de jupyterlab
    • permet d'utiliser le gestionnaire de paquets du système pour garder nodejs à jour
    • seront maintenus et disponibles aussi longtemps que les LTS seront

Donc, toutes les étapes réelles (celles-ci ont été testées pour fonctionner sur Linux Mint 18.3 Sylvia, qui est fondamentalement compatible avec ubuntu xenial aka Ubuntu 16.04 LTS. Les différences se situent surtout au niveau de nodejs, lisez le readme dans le lien github ci-dessus pour résoudre les problèmes pour les autres OS) :

Demandez à un administrateur de le faire (ou faites-le vous-même si vous savez faire sudo) :

sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install -y python3.8 python3.8-dev python3.8-distutils python3-pip python3-venv
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs

Ensuite, en tant que votre propre utilisateur, vous pouvez effectuer le reste des étapes :

pip3 install --user virtualenv virtualenvwrapper
mkdir ~/.envs

Vous devrez ensuite ajouter ce qui suit à la fin de votre fichier .bashrc :

export PATH=~/.local/bin:$PATH
export WORKON_HOME=~/.envs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source ~/.local/bin/virtualenvwrapper.sh

À ce stade, créez un nouveau shell, et vous serez en mesure d'exécuter le reste de la configuration, en installant réellement jupyterlab :

mkvirtualenv -p python3.8 jupenv
pip install jupyter matplotlib pandas ipympl tqdm
jupyter labextension install @jupyter-widgets/jupyterlab-manager

Maintenant vous avez terminé.

Pour ouvrir/utiliser jupyter, vous devez (à cause du venv que j'ai appelé jupenv ci-dessus, vous pouvez le nommer comme vous le souhaitez dans ce fichier. mkvirtualenv ligne) :

workon jupenv
jupyter lab

Sinon, j'ai vécu un enfer en essayant de faire fonctionner nodejs avec des paquets ubuntu périmés. Parfois ça marchait, pendant quelques redémarrages, puis ça échouait. D'autres fois, je n'obtenais que les mêmes widgets manquants, ou parfois des petites lignes de code js inutiles.

Les Virtualenvs valent la peine d'être utilisés, surtout lorsque vous commencez à utiliser sérieusement python, et à travailler avec d'autres personnes qui peuvent utiliser différentes versions / différents ensembles de paquets pip. VirtualEnvWrapper rend cela assez facile. L'idée de base est que tout ce que vous installez par "pip", même jupyter, reste proprement séparé (et séparé des paquets système), ce qui permet à tout de fonctionner très bien.

Il y a quelques règles de base à faire et à ne pas faire :

  • Ne cours pas pip install ... lignes sans être dans un venv
  • N'utilisez pas pip3 à la place de pip à l'intérieur d'une veine.
  • Utilisez simplement python et non python3 pour courir à l'intérieur.
  • N'utilisez pas conda... !
  • Sachez que vous pouvez mettre à jour tous vos virtualenvs en même temps avec :
    • allvirtualenv pip install -U pip

Quant aux paquets de distribution binaires de nodejs : Ceux-ci sont fortement recommandés lorsqu'ils prennent en charge votre système d'exploitation particulier. Ils seront très à jour et devraient poser le moins de problèmes possible.

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