jupyter_contrib_nbextensions 在 notebook v7+ 上已失效,因其依赖的 notebook.nbextensions 模块被移除;应改用 jupyterlab 的 outline 视图或 notebook v7.3+ 内置的 toggle outline 功能。

jupyter_contrib_nbextensions 在 notebook v7+ 上已失效,强行安装会报 ModuleNotFoundError: No module named 'notebook.nbextensions'。别折腾旧插件了——现在该用 jupyterlab 或原生 notebook 的现代方案。
为什么 jupyter_contrib_nbextensions 不再能用
新版 notebook(v7.0 起)彻底重构了前端模块系统,移除了 notebook.nbextensions 模块。所有依赖它的插件(包括 Table of Contents (2))都会 import 失败。你看到的“点击空白区域才显示目录”或“侧边栏空着不渲染”,根本不是配置问题,而是 JS 模块加载直接中断了。
替代方案:用 jupyterlab 默认文件浏览器 + 目录视图
jupyterlab 从 v4.x 开始,左侧文件浏览器是默认启用的,无需额外插件:
- 启动命令仍是
jupyter lab(不是jupyter notebook) - 左侧栏默认显示当前工作目录树,支持拖拽、右键新建、双击打开
- 打开一个
.ipynb文件后,右侧编辑器顶部有「Outline」标签页,自动提取所有#~######标题生成可跳转目录 - 快捷键
Ctrl+Shift+F(Windows/Linux)或Cmd+Shift+F(macOS)可聚焦到文件搜索框,实时过滤左侧文件列表
如果必须用 notebook(比如生产环境锁定 v7.3.x)
原生 notebook v7.3+ 已内置轻量级目录功能,但默认不显式暴露侧边栏:
- 打开任意
.ipynb文件,在编辑器右上角点View→Toggle outline,就会在右侧浮层显示标题大纲(非左侧固定栏,但功能等价) - 这个 Outline 是基于
nbformat解析的,不依赖前端 JS 插件,稳定性高 - 若需类似侧边栏体验,可用浏览器开发者工具临时注入:
document.body.style.gridTemplateColumns = '250px 1fr';+ 手动把.jp-NotebookPanel-outline元素挪进左侧区域——但这只是调试手段,不可长期依赖
别踩的坑:混用旧教程里的 pip 命令
这些命令在 2026 年已全部过时,执行即报错:
pip install jupyter_contrib_nbextensionsjupyter contrib nbextension install --userjupyter nbextension enable toc2/main
它们针对的是 notebook 的架构,现在连 <code>nbextension CLI 子命令都已被移除。真正要检查的,是 jupyter --version 输出里 notebook 和 jupyterlab 的版本号——只要 notebook ≥ 7.0 或 jupyterlab ≥ 4.0,就该切换思路,而不是硬啃老文档。











