В чем разница между «записной книжкой jupyter» и `сервером jupyter`?

#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 но там много совпадений.