Jupyter Notebook 无合作模式开关,其合作能力依赖于外部扩展或服务,而不是单机配置文件;Notebook 7+ 内置实验性 RTC 但默认关闭功能需要通过 jupyter server 启用扩展机制而不是修改 jupyter_notebook_config.py。
Jupyter Notebook 没有“合作模式”开关项,jupyter_notebook_config.py 里不存在 collaboration_enabled = True 这类配置 —— 其合作能力依赖于外部扩展或服务,而不是单机配置文件。
旧版(Notebook ≤6.x)完全不支持实时合作;Notebook 7+ 尽管实验是内置的 RTC(Real-Time Collaboration)功能,但默认关闭,不通过 jupyter_notebook_config.py 控制,而是由 Jupyter Server 扩展机制和后端服务驱动。您添加到配置文件中 c.NotebookApp.collaboration = True 或者类似的字段,在启动时会被忽略,甚至报错。
常见错误现象:
- 修改配置后重启服务,很多人还是看不到对方的光标
- jupyter notebook --help 什么也找不到 collaboration 相关参数
- 浏览器控制台报 WebSocket connection failed 或 rtc extension not found
要让 Notebook 支持合作,必须同时满足以下条件:
Jupyter Notebook 7.5.4
Jupyter Notebook 7.5.4 官方 PyPI wheel 包下载适用于本地交互式代码运行、数据分析、教学演示和文件配置实践。
下载- 运行的是
jupyter-server(而非旧版jupyter-notebook命令),版本 ≥7.0 - 安装并启用
jupyter-rpc和jupyter-server-rtc扩展(Notebook 7 内置,但需要显式启用) - 后端需支持 WebSocket 长连接(如使用)
jupyterlab启动,或保证jupyter server运行在支持 RTC 的代理后)
实操建议:
- 检查当前服务是否基于当前服务 jupyter server:运行 jupyter server list,若输出含 /lab 或 /tree 且 PID 存在,说明已就绪
- 启用 RTC 扩展:jupyter server extension enable jupyter_server_rtc
- 启动时显式指定路径:jupyter server --collaborative --no-browser(注意是 --collaborative,不是配置项)
即使启用了 --collaborative,单机 jupyter server 也不能跨网络合作 —— 它只允许 localhost 访问。真实场景:
- 局域网内合作:需要在启动命令中添加
--ip=0.0.0.0并打开端口,但不推荐,无认证,无权隔离 - 生产环境合作:必须部署
JupyterHub,并在jupyterhub_config.py中配置c.JupyterHub.allow_named_servers = True和c.Spawner.args = ['--collaborative'] - 云平台方案:GitHub Codespaces、CoCalc、Deepnote 已预装合作栈时,无需手动配置 RTC
容易踩的坑:
- 以为开了 --collaborative 结果防火墙/云服务器安全组没有放行 8888 端口
- 在 JupyterLab 4.x 中误用旧版 @jupyterlab/rtc 实际上,扩展应该依赖于内置 jupyter-server-rtc
- 用 pip install jupyter 安装的仍是 Notebook 6,必须用 pip install jupyter-server 替代
复杂之处在于,合作不是一个可以通过“打开开关”使用的功能。它涉及三层耦合:前端通信协议、后端状态同步和用户对话管理。只要浏览器禁用,即使所有配置都是正确的 WebSocket 或中间 Nginx 没配 upgrade 头,合作会默默失败 —— 这部分日志通常隐藏在浏览器开发者工具中 Network 在标签页面中,而不是终端输出。