必须安装jupyter_contrib_nbextensions和jupyter_nbextensions_configurator两个包并执行install与enable命令,否则nbextensions选项卡不可见;启用后需关闭兼容性限制才能使用目录导航、代码折叠等功能。

必须装对两个包,缺一不可
只 pip install jupyter_contrib_nbextensions 是没用的——它只提供插件功能代码,但你在 Jupyter 界面里根本看不到 Nbextensions 选项卡。真正让你能勾选“Table of Contents (2)”的,是另一个独立包:jupyter_nbextensions_configurator。它负责把配置界面注入到 Jupyter 的顶部菜单栏。
常见错误现象:装完 jupyter_contrib_nbextensions 后重启 Jupyter,菜单栏依旧没有 Nbextensions 标签。原因就是漏装或没启用这个配置器。
- conda 用户推荐一次性装全:
conda install -c conda-forge jupyter_contrib_nbextensions jupyter_nbextensions_configurator - pip 用户注意权限:Windows 上若用 Anaconda Prompt,务必以管理员身份运行;Linux/macOS 若提示 PermissionError,改用
--user参数 - 别跳过启用步骤:
jupyter nbextension enable --py jupyter_nbextensions_configurator --user必须执行,否则配置页不会加载
install --user 这步不能省,否则 JS/CSS 不生效
jupyter contrib nbextension install --user 干的事,是把插件的前端资源(JS、CSS)复制到 Jupyter 能扫描到的路径下。跳过这步,即使 Nbextensions 页面能打开,所有插件图标也都是灰的,点击无反应。
容易踩的坑:
- 误以为装完 Python 包就万事大吉,直接启动 Jupyter —— 结果 Table of Contents 勾不上,点了也没反应
- 在虚拟环境中安装,却忘了加
--user或--sys-prefix,导致资源写入了错误环境路径 - Windows 用户遇到“Access is denied”,本质是权限不足,不是命令错,应换管理员模式重试
启动后第一件事:关掉兼容性限制
打开 Jupyter Notebook,点顶部 Nbextensions 标签页,你会看到一堆插件名,但大部分是灰色不可勾选状态。这不是插件坏了,而是默认开启了 “Disable configuration for nbextensions without explicit compatibility” 选项——它会屏蔽所有未声明支持当前 Jupyter 版本的插件。
主流插件如 Table of Contents (2)、Variable Inspector、Code folding 都受此影响。不手动取消勾选这一项,你永远启不开它们。
操作路径很直白:在 Nbextensions 页面左上角找这个复选框,把它取消勾选,然后刷新页面。之后所有插件立刻变亮,可自由启用。
Table of Contents (2) 和 Table of Contents 区别在哪
界面上通常出现两个名字相似的选项:Table of Contents 和 Table of Contents (2)。前者是旧版,已停止维护;后者是社区持续更新的活跃版本,支持更稳定的标题层级识别、滚动同步、快捷键(Ctrl+Shift+T)和响应式布局。
选错的后果:
- 旧版可能在 Jupyter ≥6.0 下完全不渲染目录,或生成空列表
- 新版依赖
toc2模块,启用后会在 notebook 工具栏右侧新增一个目录按钮,点击即展开/收起 - 目录生成逻辑基于 Markdown 单元格里的
#、##等标题语法,纯代码单元格不会被纳入
插件生效后无需重启,但如果你之前打开的 notebook 没自动显示目录按钮,可以刷新该页面或新建一个 notebook 测试。











