Skip to content

Jupyter Server

Jupyter Server 为 Jupyter 网络应用程序提供核心服务、API 以及REST endpoints,简单来说就是 Jupyter 的引擎,他提供 API 供其他组件使用,并集合其他组件以 REST API 的形式为前端提供服务。

安装

大多数 Jupyter 用户无需手动安装 Jupyter Server。所有 Jupyter Web 应用程序都将他作为依赖(包含正确兼容版本),因此最好不要手动安装他:

Bash
pip|conda install jupyter_server

如果此时运行他,仅仅会对外提供基础的核心服务,你是无法使用它打开 Notebook 的,因为默认并没有安装 Notebook、JupyterLab 等扩展。

Tips

倒是自动会安装一个 jupyter_server_terminals 扩展,他为 Jupyter Wep APP 提供了创建终端的能力

配置

默认情况下 Jupyter Server 在 Jupyter 路径上的一个 jupyter_server_config.py|json 中查找特定于服务器的配置。我们可以通过 jupyter --paths 来查看所有路径:

Bash
# 该命令以优先级的顺序列出了所有的可配置路径
-> % jupyter --paths
config:
    /opt/homebrew/Caskroom/miniconda/base/envs/jupyter/etc/jupyter
    /Users/ygd/.jupyter
    /Users/ygd/.local/etc/jupyter
    /usr/local/etc/jupyter
    /etc/jupyter
data:
    /opt/homebrew/Caskroom/miniconda/base/envs/jupyter/share/jupyter
    /Users/ygd/Library/Jupyter
    /Users/ygd/.local/share/jupyter
    /usr/local/share/jupyter
    /usr/share/jupyter
runtime:
    /Users/ygd/Library/Jupyter/runtime

默认情况下配置文件是不存在的,可以使用 jupyter server --generate-config 命令来快速创建一个:

Bash
-> % jupyter server --generate-config
Writing default config to: /Users/ygd/.jupyter/jupyter_server_config.py

Tips

具体如何配置查看,jupyter server 配置介绍

扩展

Jupyter Server 通过扩展来真正为用户提供服务,如果仅仅安装 Jupyter Server 就是一个裸的服务器,是没有办法提供服务的,我们可以通过 Jupyter server extension list 来查看所有扩展:

Bash
-> % jupyter server extension list
Config dir: /Users/yangguodong/.jupyter

Config dir: /opt/homebrew/Caskroom/miniconda/base/envs/jupyter/etc/jupyter
    jupyter_server_terminals enabled
    - Validating jupyter_server_terminals...
      jupyter_server_terminals 0.4.4 OK

Config dir: /usr/local/etc/jupyter

刚安装的 jupyter_server 仅仅提供了 jupyter_server_terminals 扩展,并不能为用户提供其他服务。要想提供服务需要安装其他扩展,例如 nbclassic:

Bash
pip|conda install nbclassic

安装完成后我们可以查看:

Bash
-> % jupyter server extension list
Config dir: /Users/yangguodong/.jupyter

Config dir: /opt/homebrew/Caskroom/miniconda/base/envs/jupyter/etc/jupyter
    jupyter_server_terminals enabled
    - Validating jupyter_server_terminals...
      jupyter_server_terminals 0.4.4 OK
    nbclassic enabled
    - Validating nbclassic...
      nbclassic 1.1.0 OK
    notebook_shim enabled
    - Validating notebook_shim...
      notebook_shim  OK

Config dir: /usr/local/etc/jupyter

安装了 nbclassic 扩展,此时我们有两种方式为外提供 nbclassic 服务:

Bash
# 第一种方式,会自动打开浏览器并打开 notebook
jupyter nbclassic

# 第二种方式
# 需要手动通过 https://ip:port?token=xxx/tree 打开
jupyter server

所有的扩展都是以 REST endpoints 的为外提供服务的,例如 /tree 就是 nbclassic 为外提供服务器的根。当然有些扩展是需要 POST 请求来创建的,就像 jupyter_server_terminals 就无法直接通过 /terminals 来打开。

Tips

实际上安装 jupyterlab 就是安装了 jupyter_server 并且安装 jupyterlab 插件

Tips

可以查看每个项目的仓库,其中会包含一个 rest_api.yaml 文件其中定义了该组件提供的 REST API 请求方式。

管理扩展

命令 说明
jupyter server extension list 列出所有扩展
jupyter server extension enable myextension 启用扩展
jupyter server extension disable myextension 禁用扩展

也可以直接通过 CLI 来运行扩展的入口:

Bash
# 此时会自动打开扩展提供的 REST 的根入口点
jupyter notebook

Tips

其他启用的扩展仍然可以供用户使用,入口点仅仅是提供了一个更直接的启动机制

参考