Jupyter Server
Jupyter Server 为 Jupyter 网络应用程序提供核心服务、API 以及REST endpoints,简单来说就是 Jupyter 的引擎,他提供 API 供其他组件使用,并集合其他组件以 REST API 的形式为前端提供服务。
安装
大多数 Jupyter 用户无需手动安装 Jupyter Server。所有 Jupyter Web 应用程序都将他作为依赖(包含正确兼容版本),因此最好不要手动安装他:
如果此时运行他,仅仅会对外提供基础的核心服务,你是无法使用它打开 Notebook 的,因为默认并没有安装 Notebook、JupyterLab 等扩展。
Tips
倒是自动会安装一个 jupyter_server_terminals
扩展,他为 Jupyter Wep APP 提供了创建终端的能力
配置
默认情况下 Jupyter Server 在 Jupyter 路径上的一个 jupyter_server_config.py|json
中查找特定于服务器的配置。我们可以通过 jupyter --paths
来查看所有路径:
# 该命令以优先级的顺序列出了所有的可配置路径
-> % 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
命令来快速创建一个:
-> % 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
来查看所有扩展:
-> % 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:
安装完成后我们可以查看:
-> % 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 服务:
# 第一种方式,会自动打开浏览器并打开 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 来运行扩展的入口:
Tips
其他启用的扩展仍然可以供用户使用,入口点仅仅是提供了一个更直接的启动机制