В чем разница между jupyter notebook и jupyter server?

Бег 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 и некоторые дополнительные точки REST API на сервере).

Однако, поскольку сейчас существует несколько клиентов (внешних интерфейсов), предоставляющих разные веб-приложения для ноутбуков:

  • Блокнот Jupyter
  • JupyterLab
  • RetroLab
  • ntreact
  • несколько проприетарных клиентов, разработанных вне проекта Jupyter

Имело смысл разделить серверный компонент, используемый всем этим, чтобы, например, JupyterLab не зависел от ноутбука. Это также означает, что если требуется исправление для серверного компонента, его можно быстро выпустить независимо от цикла выпуска Jupyter Notebook (и пользователи всех интерфейсов могут получить немедленную выгоду).

Как следствие, и чтобы очистить разрыв, старый Jupyter Notebook был разделен на:

  • jupyter-server - сервер, адаптированный JuptyterLab, RetroLab, ntreact
  • nbclassic - блокнот Jupyter как расширение jupyter-server

Это подразумевает изменения для пользователей и разработчиков, некоторые из которых уже описаны в документации по переходу из записной книжки :

  • параметры, относящиеся к серверу, а не ноутбуку, были переименованы с на 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, вы увидите, что используются разные серверы:

  • (при условии, что установлен nbclassic) будет использовать новый
  • будет использовать старый сервер
  • jupyter lab будет использовать новые jupyter-server начиная с JupyterLab 3.0, если он не запущен на JupyterHub / Binder, где он все еще может использовать старый сервер, в зависимости от конфигурации

Это также означает, что вы можете видеть разные расширения при запуске vs jupyter nbclassic (в зависимости от того, обновили ли их разработчики местоположения и решили ли они поддерживать устаревший сервер).

Создание nbclassic замена, а не удаление серверного кода из существующего пакета была предназначена для обеспечения обратной совместимости, и поэтому у вас все еще есть две копии сервера Tornado (одна предоставляется jupyter notebook и один jupyter server). Чтобы упростить ситуацию, вы можете удалить notebook и установить nblcassic, но, учитывая, что переход находится в процессе, вам может потребоваться настроить некоторые вещи вручную.

На данный момент это может показаться неудобным, но этот шаг обеспечивает большую ремонтопригодность базовой инфраструктуры Jupyter в будущем и в дальнейшем принесет большую пользу пользователям и системным администраторам.

Другие вопросы по тегам