#jupyter-notebook #jupyter
Вопрос:
Запуск jupyter notebook
и jupyter server
дают мне очень похожие результаты, и описания также очень похожи.
❯ jupyter notebook -h
The Jupyter HTML Notebook.
This launches a Tornado based HTML Notebook Server that serves up an
HTML5/Javascript Notebook client.
❯ jupyter server -h
The Jupyter Server.
This launches a Tornado-based Jupyter Server.
Есть различия, например server
, не загружается nbextensions
, но я не понимаю, почему существуют две команды, которые так сильно пересекаются.
Для справки, это версии различных модулей.
❯ jupyter --version
jupyter core : 4.7.1
jupyter-notebook : 6.3.0
qtconsole : 5.0.3
ipython : 7.22.0
ipykernel : 5.3.4
jupyter client : 6.1.12
jupyter lab : 3.0.11
nbconvert : 6.0.7
ipywidgets : 7.6.3
nbformat : 5.1.3
traitlets : 5.0.5
Ответ №1:
Блокнот Jupyter ( notebook
модуль) содержит оба:
- сервер для ноутбуков (серверная часть веб-приложения, в которой размещается содержимое ноутбука, прокси-серверы взаимодействуют с ядрами и взаимодействуют с операционной системой, например, открывая интернет-браузер при запуске; эта часть обычно написана на Python), и
- клиент (интерфейс веб-приложения, например, HTML-код, javascript и некоторые дополнительные точки API REST на сервере).
Однако, поскольку в настоящее время существует несколько клиентов (интерфейсов), предоставляющих различные веб-приложения для ноутбуков:
- Записная книжка Юпитера
- JupyterLab
- РетроЛаб
- ntreact
- несколько собственных клиентов, разработанных за пределами проекта Jupyter
Имело смысл разделить серверный компонент, используемый всеми ними, чтобы, например, JupyterLab не зависел от ноутбука. Это также означает, что если требуется исправление серверного компонента, его можно быстро выпустить независимо от цикла выпуска ноутбука Jupyter (и пользователи всех интерфейсов могут немедленно извлечь выгоду).
Как следствие, и чтобы сделать разрыв чистым, старая записная книжка Юпитера была разделена на:
- jupyter-сервер — сервер, адаптированный JuptyterLab, RetroLab, ntreact
- nbclassic — ноутбук Jupyter в качестве расширения jupyter-сервера
Это подразумевает изменения для пользователей и разработчиков, некоторые из которых уже описаны в документах «миграция из ноутбука» .:
- параметры, относящиеся к серверу, а не к ноутбуку, были переименованы из
c.NotebookApp
вc.ServerApp
(параметры, относящиеся к ноутбуку, остаютсяc.NotebookApp
) - конфигурация для конкретного сервера теперь хранится в
jupyter_server_config.py
, а неjupyter_notebook_config.py
(то же самое для.json
версии) - теперь пользователи должны использовать
jupyter server extension
вместоjupyter serverextension
(обратите внимание на дополнительное пространство!) для перечисления, включения или отключения расширений - расширения сервера должны размещать свои файлы в новом месте:
etc/jupyter/jupyter_server_config.d
вместоetc/jupyter/jupyter_notebook_config.d
(на практике большинство расширений, которые были обновлены для поддержки сервера jupyter, теперь размещают файлы в обоих местах для обратной совместимости с ноутбуком, но это изменится в будущем)
Важно отметить, что в зависимости от того, как вы запустите свой ноутбук jupyter, вы увидите, что используются разные серверы:
jupyter nbclassic
(при условии, что установлен nbclassic) будет использовать новыйjupyter-server
jupyter notebook
будет использовать старыйnotebook
серверjupyter lab
будет использовать новыйjupyter-server
, начиная с JupyterLab 3.0, если он не работает на JupyterHub/Binder, где он все еще может использовать старыйnotebook
сервер, в зависимости от конфигурации
Это также означает, что вы можете видеть различные расширения при запуске jupyter notebook
vs jupyter nbclassic
(в зависимости от того, обновили ли их разработчики местоположения и решили ли они поддерживать устаревший notebook
сервер).
Создание nbclassic
замены, а не удаление кода сервера из существующего notebook
пакета предназначалось для обеспечения обратной совместимости, и именно поэтому у вас все еще есть две копии сервера Tornado (одна предоставлена jupyter notebook
и одна предоставлена jupyter server
). Чтобы упростить ситуацию , вы можете удалить notebook
и установить nblcassic
, но, учитывая, что переход продолжается, вам, возможно, потребуется настроить несколько вещей вручную. Однако это лишь временная ситуация, так как планируется, что ноутбук будет перенесен для использования jupyter server
, начиная с версии 7.0.
На данный момент это может показаться неудобным, но этот шаг обеспечивает большую ремонтопригодность основной инфраструктуры Jupyter в будущем и принесет большую пользу пользователям и системным администраторам в дальнейшем.
Комментарии:
1. Спасибо вам за супер подробный ответ!
2. Хорошее объяснение! Большой вопрос здесь в том, как мы узнаем, какая конфигурация теперь используется jupyter_server_config.py и который хранится в jupyter_notebook_config.py? Я пробовал
jupyter server --generate-config
,jupyter notebook --generate-config
но там много совпадений.