Резюме
В сложной настройке, когда процесс jupyter-lab
и процесс ядра Jupyter / IPython работают в разных виртуальных средах Python, обратите внимание на версии пакета Python и расширения Jupyter (например, ipympl
, jupyter-matplotlib
), связанных с Jupyter, и их совместимость между средами.
И даже в одной виртуальной среде Python убедитесь, что вы соблюдаете _ 4_ таблица совместимости.
Пример
Пара примеров, как запустить JupyterLab.
Простой (ул)
Думаю, самый простой кроссплатформенный способ запустить JupyterLab - это запустить его из контейнера Docker. Вы можете создать и запустить контейнер JupyterLab 3 следующим образом.
docker run --name jupyter -it -p 8888:8888 \
# This line on a Linux- and non-user-namespaced Docker will "share"
# the directory between Docker host and container, and run from the user.
-u 1000 -v $HOME/Documents/notebooks:/tmp/notebooks \
-e HOME=/tmp/jupyter python:3.8 bash -c "
mkdir /tmp/jupyter; \
pip install --user 'jupyterlab < 4' 'ipympl < 0.8' pandas matplotlib; \
/tmp/jupyter/.local/bin/jupyter lab --ip=0.0.0.0 --port 8888 \
--no-browser --notebook-dir /tmp/notebooks;
"
Когда он закончится (а это займет некоторое время), самые нижние строки в терминале должны выглядеть примерно так:
To access the server, open this file in a browser:
...
http://127.0.0.1:8888/lab?token=abcdef...
Вы можете просто щелкнуть по этой ссылке, и JupyterLab должен открыться в вашем браузере. Как только вы выключите экземпляр JupyterLab, контейнер остановится. Вы можете перезапустить его с помощью docker start -ai jupyter
.
![jupyterlab 3](https://i.stack.imgur.com/H7MVm.png)
Сложный
Этот GitHub Gist иллюстрирует идею создания виртуальной среды Python с помощью JupyterLab 2, а также создания всего необходимые расширения с Nodejs в контейнере, без установки Nodejs в хост-системе. В JupyterLab 3 и предварительная сборка расширений этот подход становится менее актуальным.
Контекст
Сегодня я чесал голову во время отладки %matplotlib widget
, не работающего в JupyterLab 2. У меня есть отдельный предварительно собранный JupyterLab venv (как описано выше), который поддерживает локальный JupyterLab в качестве режима приложения Chromium (т.е. c.LabApp.browser = 'chromium-browser --app=%s'
в конфигурации), и несколько ядер IPython. из простых venv Python с конкретными зависимостями (редко меняются) и приложения, раскрывающего себя как ядро IPython. Проблема с режимом интерактивного виджета проявляется по-разному.
Например, имея
В консоли браузера у меня были такие ошибки:
Error: Module jupyter-matplotlib, semver range ^0.9.0 is not registered as a widget module
Error: Could not create a model.
Could not instantiate widget
В пользовательском интерфейсе JupyterLab:
%matplotlib widget
успешно перезапускается
- Графики застряли в виджете "Загрузка" ...
- Ничего не происходит при повторном запуске ячейки с выводом диаграммы
- При предыдущих попытках
%matplotlib widget
мог поднять что-то вроде KeyError: '97acd0c8fb504a2288834b349003b4ae'
При понижении версии ipympl==0.6.3
в ядре venv в консоли браузера:
Could not instantiate widget
Exception opening new comm
Error: Could not create a model.
Module jupyter-matplotlib, semver range ^0.8.3 is not registered as a widget module
Как только я сделал пакеты / расширения в соответствии с _ 24_ таблица совместимости:
в хосте JupyterLab venv: расширение jupyter-matplotlib v0.8.3, ipympl==0.6.3
в ядре venv: ipympl==0.6.3
, matplotlib==3.3.4
Это более или менее работает так, как ожидалось. Ну, есть очень мелкие сбои, например, за исключением того, что я помещаю %matplotlib widget
на ячейку с диаграммой, скажем, при перезапуске первая диаграмма накапливает все содержимое всех диаграмм в записной книжке. При %matplotlib widget
на ячейку одновременно активна только одна диаграмма. И при перезапуске отображается только последний виджет (но ручной повторный запуск ячейки исправляет).
person
saaj
schedule
05.06.2021
JavaScript output is disabled in JupyterLab
- person Albatross   schedule 03.05.2018%matplotlib widget
2.) Убедитесь, что у вас установлена версия Jupyter Lab ›1.0 и ipywidgets› 7.5, как указано здесь: github.com/matplotlib/jupyter-matplotlib/issues/133 3.) Откройте Jupyter Lab из терминала с помощью командыjupyter lab
. Раньше я использовал программу, которая сокращала время для меня, поэтому мне не нужно было открывать терминал. - person NeStack   schedule 03.08.2019