`jupyter notebook` 和 `jupyter server` 有什么区别?
What is the difference between `jupyter notebook` and `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
Jupyter 笔记本(notebook
模块)包含:
- 笔记本服务器(托管笔记本内容的 Web 应用程序的后端,代理与内核的交互,并通过例如在启动时打开互联网浏览器与操作系统交互;这部分通常写在 Python), 和
- 客户端(Web 应用程序的前端,例如 HTML 代码,javascript,以及服务器上的一些额外的 REST API 点)。
但是,由于现在有多个客户端(前端)为笔记本提供不同的 Web 应用程序:
拆分所有这些使用的服务器组件是有意义的,例如JupyterLab 不必依赖笔记本。这也意味着如果需要对服务器组件进行修复,它可以独立于 Jupyter Notebook 发布周期而快速发布(所有前端的用户都可以立即受益)。
因此,为了彻底分手,旧的 Jupyter Notebook 被拆分为:
- jupyter-server - 由 JuptyterLab、RetroLab、ntreact 适配的服务器
- nbclassic - 作为 jupyter-server 扩展的 Jupyter Notebook
这意味着对用户和开发人员的更改,一些已在 "migrate from notebook" 文档中描述:
- 特定于服务器而非笔记本的选项已从
c.NotebookApp
重命名为 c.ServerApp
(特定于笔记本的选项保持 c.NotebookApp
)
- 服务器特定配置现在存储在
jupyter_server_config.py
而不是 jupyter_notebook_config.py
(.json
版本相同)
- 用户现在应该使用
jupyter server extension
而不是 jupyter serverextension
(注意额外的 space!)来列出、启用或禁用扩展程序
- 服务器扩展需要将它们的文件放在新位置:
etc/jupyter/jupyter_server_config.d
而不是 etc/jupyter/jupyter_notebook_config.d
(实际上,大多数已更新以支持 jupyter 服务器的扩展现在都将文件放在两个位置与笔记本向后兼容,但这将在未来改变)
请务必注意,根据您启动 jupyter notebook 的方式,您会看到正在使用不同的服务器:
jupyter nbclassic
(假设安装了 nbclassic)将使用新的 jupyter-server
jupyter notebook
将使用旧的 notebook
服务器
jupyter lab
将使用新的 jupyter-server
从 JupyterLab 3.0 开始,除非 运行 在 JupyterHub/Binder 上它可能仍在使用旧的 notebook
服务器,具体取决于配置
这也意味着当 运行 jupyter notebook
与 jupyter nbclassic
时,您可能会看到不同的扩展(取决于他们的开发人员是否更新了位置,以及他们是否决定支持遗留 notebook
服务器)。
创建 nbclassic
替换而不是从现有 notebook
包中删除服务器代码是为了确保向后兼容性,这就是为什么你仍然有两个 Tornado 服务器副本(一份由 jupyter notebook
提供,一份由 jupyter server
提供)。为了使情况更简单,您可以删除 notebook
并安装 nblcassic
,但鉴于转换正在进行中,您可能需要手动调整一些内容。但是,这只是暂时的情况,因为计划从 v7.0 开始将 Notebook 迁移到使用 jupyter server
。
目前这可能看起来不方便,但此步骤可确保未来核心 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
Jupyter 笔记本(notebook
模块)包含:
- 笔记本服务器(托管笔记本内容的 Web 应用程序的后端,代理与内核的交互,并通过例如在启动时打开互联网浏览器与操作系统交互;这部分通常写在 Python), 和
- 客户端(Web 应用程序的前端,例如 HTML 代码,javascript,以及服务器上的一些额外的 REST API 点)。
但是,由于现在有多个客户端(前端)为笔记本提供不同的 Web 应用程序:
拆分所有这些使用的服务器组件是有意义的,例如JupyterLab 不必依赖笔记本。这也意味着如果需要对服务器组件进行修复,它可以独立于 Jupyter Notebook 发布周期而快速发布(所有前端的用户都可以立即受益)。
因此,为了彻底分手,旧的 Jupyter Notebook 被拆分为:
- jupyter-server - 由 JuptyterLab、RetroLab、ntreact 适配的服务器
- nbclassic - 作为 jupyter-server 扩展的 Jupyter Notebook
这意味着对用户和开发人员的更改,一些已在 "migrate from notebook" 文档中描述:
- 特定于服务器而非笔记本的选项已从
c.NotebookApp
重命名为c.ServerApp
(特定于笔记本的选项保持c.NotebookApp
) - 服务器特定配置现在存储在
jupyter_server_config.py
而不是jupyter_notebook_config.py
(.json
版本相同) - 用户现在应该使用
jupyter server extension
而不是jupyter serverextension
(注意额外的 space!)来列出、启用或禁用扩展程序 - 服务器扩展需要将它们的文件放在新位置:
etc/jupyter/jupyter_server_config.d
而不是etc/jupyter/jupyter_notebook_config.d
(实际上,大多数已更新以支持 jupyter 服务器的扩展现在都将文件放在两个位置与笔记本向后兼容,但这将在未来改变)
请务必注意,根据您启动 jupyter notebook 的方式,您会看到正在使用不同的服务器:
jupyter nbclassic
(假设安装了 nbclassic)将使用新的jupyter-server
jupyter notebook
将使用旧的notebook
服务器jupyter lab
将使用新的jupyter-server
从 JupyterLab 3.0 开始,除非 运行 在 JupyterHub/Binder 上它可能仍在使用旧的notebook
服务器,具体取决于配置
这也意味着当 运行 jupyter notebook
与 jupyter nbclassic
时,您可能会看到不同的扩展(取决于他们的开发人员是否更新了位置,以及他们是否决定支持遗留 notebook
服务器)。
创建 nbclassic
替换而不是从现有 notebook
包中删除服务器代码是为了确保向后兼容性,这就是为什么你仍然有两个 Tornado 服务器副本(一份由 jupyter notebook
提供,一份由 jupyter server
提供)。为了使情况更简单,您可以删除 notebook
并安装 nblcassic
,但鉴于转换正在进行中,您可能需要手动调整一些内容。但是,这只是暂时的情况,因为计划从 v7.0 开始将 Notebook 迁移到使用 jupyter server
。
目前这可能看起来不方便,但此步骤可确保未来核心 Jupyter 基础架构具有更好的可维护性,并且以后将使用户和系统管理员受益匪浅。