“jupyternotebook”和“jupyterserver”有什么区别?
运行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(notebook模块)包含以下两者:
- 笔记本服务器(托管笔记本内容的 Web 应用程序的后端,代理与内核的交互,并通过例如在启动时打开互联网浏览器与操作系统交互;这部分通常是用 Python 编写的),和
- 客户端(Web 应用程序的前端,例如 HTML 代码、javascript 和服务器上的一些额外 REST API 点)。
但是,因为现在有多个客户端(前端)为笔记本提供不同的 Web 应用程序:
- Jupyter 笔记本
- JupyterLab
- 复古实验室
- 联系
- 在 Jupyter 项目之外开发的多个专有客户端
拆分所有这些使用的服务器组件是有意义的,这样 JupyterLab 就不必依赖于 notebook。这也意味着如果需要修复服务器组件,它可以独立于 Jupyter Notebook 发布周期快速发布(所有前端的用户都可以立即受益)。
因此,为了彻底拆分,旧的 Jupyter Notebook 被拆分为:
- jupyter-server - 由 JuptyterLab、RetroLab、ntreact 改编的服务器
- nbclassic - 作为 jupyter-server 扩展的 Jupyter Notebook
这意味着用户和开发人员的更改,其中一些已在“从笔记本迁移”文档中描述:
- 特定于服务器而不是笔记本的选项被重命名
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 服务器的扩展现在都将文件放置在两个位置以与 notebook 向后兼容,但这将在未来发生变化)
需要注意的是,根据您启动 jupyter notebook 的方式,您将看到正在使用的不同服务器:
jupyter nbclassic(假设安装了 nbclassic)将使用新的jupyter-serverjupyter notebook将使用旧notebook服务器jupyter lab将使用jupyter-server从 JupyterLab 3.0 开始的新版本,除非在 JupyterHub/Binder 上运行,它可能仍在使用旧notebook服务器,具体取决于配置
这也意味着您在运行jupyter notebookvs时可能会看到不同的扩展jupyter nbclassic(取决于他们的开发人员是否更新了位置,以及他们是否决定要支持旧notebook服务器)。
创建nbclassic替换而不是从现有notebook包中删除服务器代码是为了确保向后兼容性,这就是为什么您仍然拥有 Tornado 服务器的两个副本(一个由 提供jupyter notebook,一个由 提供jupyter server)。为了使情况更简单,您可以删除notebook并安装nblcassic,但考虑到转换正在进行中,您可能需要手动调整一些内容。但是,这只是暂时的情况,因为计划jupyter server从 v7.0 开始迁移 Notebook 使用。
这现在看起来可能不方便,但是这一步确保了核心 Jupyter 基础架构在未来具有更高的可维护性,并将在以后极大地使用户和系统管理员受益。