Как заставить ipywidgets работать в Jupyter Lab?

В Jupyter Notebook ipywidgets работают нормально, однако, похоже, они не работают в Jupyter Lab (который предположительно лучше, чем Notebook).

Я следовал этим указаниям.

Шаг 1. Установлен Node.js (https://nodejs.org/en/)

Шаг 2. Установленные требования на Python 3 с conda:

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

К сожалению, в блокноте jupyter lab не работают базовые виджеты:

введите описание изображения здесь


person user5601    schedule 28.03.2018    source источник
comment
Также полезно посмотреть на консоль javascript браузера.   -  person jtlz2    schedule 07.02.2020
comment
Какие версии вы пробовали?   -  person jtlz2    schedule 07.02.2020
comment
Вы перезагружали ядро, если оно уже было запущено?   -  person Matthew    schedule 10.09.2020


Ответы (9)


JupyterLab теперь предпочитает модель, в которой больше не разрешается встраивать произвольный javascript в вывод ячейки. , то есть сколько интерактивных модулей Jupyter Notebook раньше работало. Теперь они просят, чтобы интерактивные модули создавали расширение JupyterLab. IPyWidgets имеет расширение, которое можно активировать с помощью запустите это в командной строке (предполагается, что у вас уже установлен NodeJS):

jupyter labextension install @jupyter-widgets/jupyterlab-manager
person scnerd    schedule 02.04.2018
comment
Это также решило следующую ошибку: qgrid не отображается, а показывает только QgridWidget(grid_options={'fullWidthRows': True, 'syncColumnCellResize': True,. Я добавил комментарий, чтобы упростить поиск, поскольку ни одно из других решений этой ошибки у меня не помогло. Спасибо - person KWx; 07.11.2019
comment
У меня не сработало - Ошибка: объект jupyter.widget не найден в реестре. - person jtlz2; 04.02.2020
comment
Мне пришлось дважды запустить эту команду. Оба раза результат был идентичным - без ошибок. Я почти уверен, что перезапустил все правильно, но кто знает. Странно. YMMV. - person Leopd; 19.06.2020

У меня был такой же pbm, и я пробовал это решение (надеюсь, что это поможет другим):

В моем случае jupyter labextension install @jupyter-widgets/jupyterlab-manager выдал такую ​​ошибку:

> /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/[email protected]" 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

Затем я использовал предыдущую версию 0.34 вместо 0.35: jupyter labextension install @jupyter-widgets/[email protected]

Фактически, согласно this, иногда у команд появляется время рассмотреть последнюю версию.

UP (согласно комментариям): вы можете проверить jupyter lab --version и найти соответствие на совместимость его версий.

И теперь это работает!

введите описание изображения здесь

person 4givN    schedule 24.04.2018
comment
Можно проверить версию jupyter lab --version и найти соответствие на этой совместимости версий . - person garej; 09.03.2019
comment
Этот комментарий - мой любимый ответ :). - person John Humphreys; 01.07.2019
comment
У меня не сработало - Ошибка: объект jupyter.widget не найден в реестре. - person jtlz2; 04.02.2020
comment
У меня это работает, большое спасибо! Похоже, проблема связана с зависимостями версий пакетов. - person TSLsun; 29.06.2020

У меня была такая же проблема, и то, что сработало для меня сегодня, - это выполнение команды 'clean', как упоминалось здесь: https://ipywidgets.readthedocs.io/en/latest/user_install.html#installing-the-jupyterlab-extension

So:

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

И это только что помогло мне.

person rocksteady    schedule 12.02.2019

Я получал Permission Denied ошибку, поэтому добавление sudo к принятой команде помогло: sudo jupyter labextension install @jupyter-widgets/jupyterlab-manager.

person David Albrecht    schedule 23.07.2019

У меня та же проблема, что и у @ jtlz2, что ни одно из приведенных выше предложений не работает для меня, кроме очень конкретной комбинации версий @hainm для jupyter-lab, ipywidgests и jupyter-widgets / jupyterlab-manager.

Следуя номерам исходных версий, перечисленным в этом сообщении (https://github.com/jupyter-widgets/ipywidgets/issues/2488#issuecomment-509719214), я попытался найти самую последнюю комбинацию версий, которая работает. Я перечисляю их ниже, чтобы можно было попробовать, если ему / ей больше ничего не работает.

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

Похоже, что версия nodejs играет ключевую роль. При всех прочих равных условиях, если я обновлю nodejsversion до 12.x + или последней версии 14.x, эта комбинация, а также комбинация @hainm не смогут заставить ipywidgets нормально работать в Jupyterlab.

Кроме той, которую я указал в ячейке кода выше, для меня также работают 6 комбинаций ниже.

(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)
person 顏嘉儀    schedule 05.11.2020

Согласно документации ipywidgets.readthedocs.io (Установка расширения JupyterLab) для" JupyterLab "выполните следующие действия в" Подсказка Anaconda ".

Шаг 1

conda install -c conda-forge nodejs

Шаг 2

jupyter labextension install @jupyter-widgets/jupyterlab-manager
person Iman Irajian    schedule 07.06.2020

Примечание. Большинство приведенных выше ответов устарели (по состоянию на 19 июля 2021 г.). С последними версиями этих пакетов все должно быть намного проще. Однако в 2021 году у меня возникла проблема с отображением panel виджетов в jupyterlab, размещенном на jupyterhub, и я наткнулся на этот пост. Сначала я попробовал несколько из этих ответов, но ни один из них не сработал. Покопавшись в некоторых библиотеках, я обнаружил следующее:

  1. jupyter labextension install @jupyter-widgets/jupyterlab-manager больше не требуется с ipywidgets==7.6 и jupyterlab>=3.0. source. Если вы используете последнюю версию jupyterlab, вам просто нужно установить ipywidgets, и расширение будет включено автоматически, если авторы расширений виджетов также выполните некоторые действия.
    # P2 #
  2. panel также последовал его примеру и включил необходимые расширения в пакет pyviz_comms, так что теоретически все должно было быть включено для моего случая. исходный код
    # P3 #

Ответом на мою проблему оказалось то, что я устанавливал panel после сборки сервера jupyterlab через jupyterhub. (например, для конкретной записной книжки пользователь запускал !pip install panel). Здесь у меня возникает некоторая нечеткость, поскольку я не уверен, почему это не работает, учитывая, что ipywidgets уже установлен, а panel install включает предварительно созданное расширение jupyterlab. Однако я смог исправить свою проблему, используя вместо этого образ jupyterlab для создания из jupyterhub, в котором были предварительно установлены ipywidgets>=7.6 и panel>=0.11.3 (и, следовательно, pyviz_comms>=2.0). После этого виджеты панели в jupyterlab на jupyterhub теперь работают. Надеюсь, это поможет любому, у кого есть подобная проблема.

person Michael Parque    schedule 19.07.2021

Ни один из других ответов не помог мне. Похоже, все дело в совместимости версий. Наконец-то он заработал - см. Ниже. Все кредиты @hainm на github (исходная ссылка: https://github.com/jupyter-widgets/ipywidgets/issues/2488#issuecomment-509719214) Мой SO-ответ на этот вопрос: https://stackoverflow.com/a/60059786/1021819 Вот точная копия этого ответа:

Использование https://github.com/jupyter-widgets/ipywidgets/issues/2488#issuecomment-509719214, в терминале jupyterlab - запущенном на jupyterhub - выполните:

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

Здесь может быть интересен jupyter lab clean; jupyter lab build.

Затем в записной книжке .ipynb, запущенной в том же окне jupyterlab, нажмите кнопку перезапуска ядра.

ВАЖНО: не забудьте также ОБНОВИТЬ страницу браузера - иначе все усилия будут напрасными. : \

Затем выполните пример:

from ipywidgets import interact

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

Никогда не думал, что доживу до этого дня, но - эй, престо - наконец-то появился виджет!

Печально то, что установка чрезвычайно чувствительна к установке других расширений, а комбинация совместимых версий очень специфична.

введите здесь описание изображения

person jtlz2    schedule 07.02.2020

Если вы работаете в Linux и вы предпочли бы полностью избегать conda и использовать виртуальные envs (venvs), чтобы поддерживать python, И вы используете более старую / LTS ОС на основе Debian, который может не иметь обновленных nodejs: то есть Ubuntu 16.04 LTS, у которого нет node, а скорее nodejs (node принадлежит другому пакету, а версия 'legacy nodejs' слишком старая), затем читайте дальше.

Это немного сложнее настроить, но гораздо проще поддерживать в долгосрочной перспективе, чем conda. (вы всегда можете создать новый venv для нового проекта, не нарушая старые проекты).

Основные моменты:

  • используйте PPA, чтобы получить свежие версии того, что вам нужно
  • Use virtualenvwrapper so you can:
    • use up-to-date python3
    • Избегайте испортить вашу установку pip
    • избегайте путаницы с системным менеджером пакетов
    • также легко работать с людьми с разными версиями python
    • следовать лучшей практике python
    • легко иметь разные venv, которые могут иметь старые или несовместимые пакеты python и pip.
  • Use Nodejs binary distributions
    • need node.js version "10.x" for jupyterlab widgets
    • позволяет использовать системный менеджер пакетов, чтобы поддерживать nodejs в свежем виде
    • будут поддерживаться и доступны до тех пор, пока LTS

Итак, все фактические шаги (они были протестированы для работы на Linux Mint 18.3 Sylvia, которая в основном совместима с ubuntu xenial aka Ubuntu 16.04 LTS. Различия будут возникать в основном в nodejs, прочтите readme в ссылке github выше, чтобы решить для других ОС) :

Попросите администратора сделать (или сделайте это самостоятельно, если умеете 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

Затем, как собственный пользователь, вы можете выполнить остальные шаги:

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

Затем вы захотите добавить следующее в конец своего .bashrc:

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

На этом этапе создайте новую оболочку, и вы сможете запустить остальную часть установки, фактически установив jupyterlab:

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

Теперь все готово.

Чтобы открыть / использовать jupyter, вы хотите (из-за venv, который я назвал jupenv выше, вы можете назвать его как хотите в этой строке mkvirtualenv):

workon jupenv
jupyter lab

В противном случае мне не было конца, пытаясь заставить nodejs работать с устаревшими пакетами ubuntu. Иногда это срабатывало, несколько перезапусков, а затем выходило из строя. В других случаях он просто продолжал выдавать мне те же недостающие виджеты, а иногда и небольшие строчки нежелательного js-кода.

Virtualenvs стоит использовать, особенно когда вы серьезно начинаете использовать python и работаете с другими людьми, которые могут использовать разные версии / разные наборы пакетов pip. VirtualEnvWrapper делает это довольно безболезненным. Основная идея заключается в том, что все, что вы устанавливаете pip install, даже jupyter, в конечном итоге хранится отдельно (и отдельно от системных пакетов), что позволяет всем работать очень хорошо.

Есть несколько основных, что можно и чего нельзя:

  • НЕ запускайте pip install ... строк, не находясь в venv
  • НЕ используйте pip3 вместо pip в venv.
  • ДЕЙСТВИТЕЛЬНО используйте python, а не python3, чтобы работать внутри.
  • НЕ используйте conda...!
  • DO know that you can have all your virtualenvs updated at once with:
    • allvirtualenv pip install -U pip

Что касается двоичных пакетов распространения nodejs: они настоятельно рекомендуются там, где они поддерживают вашу конкретную ОС. Они будут очень актуальными и доставят минимум проблем.

person RGD2    schedule 22.06.2020