我最近在 conda 环境中安装了 nbextensions,以添加向我的笔记本添加目录 (toc2) 的功能。但我在打开 jupyter 笔记本并安装扩展后执行此操作,扩展设置中的更改并未反映在我在安装过程中打开的笔记本上,而它反映在其他未打开的笔记本上。
我尝试关闭并重新启动内核,重新启动计算机,然后再次卸载并重新安装 nbextensions(遵循 github 票证上的 这些 说明)。这些方法都不能解决打开笔记本的问题。笔记本的副本继承了它的问题。
需要注意的一件有趣的事情是,在重新安装 nbextensions(这是我最后一次尝试)之后,第一次安装中设置的更改被保留,而不是返回到默认值(即 nbextensions 中的颜色设置是我将它们切换到的不同颜色)卸载前)。我不确定我是否完全卸载了 nbextensions 或者是否真的可能。重新安装后,第二次设置中的进一步更改并没有反映在之后的任何笔记本上,例如第一次选择后删除侧边栏目录设置,侧边栏仍然保留在某些笔记本中。
我不确定发生了什么,但是:
1.) 有没有办法让设置更改普遍反映在笔记本上,特别是有一个目录?特别是在安装时打开的笔记本上?
2.)有没有办法完全卸载 nbextensions,就像它在我的机器上从未存在过一样,以便我可以再试一次?
toc2 模块向笔记本添加一些元数据。 以防万一此元数据丢失、值错误或写入的默认值导致目录不显示,请尝试以下操作:
打开笔记本并选择“编辑”->“编辑笔记本元数据”。
删除
"toc":
部分(如果存在)并将其添加到元数据的末尾:
"toc": {
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"base_numbering": 1,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": true,
"toc_position": {
"height": "382px",
"width": "256px",
"left": "10px",
"top": "10px"
},
"toc_section_display": true,
"toc_window_display": true
}
小心不要删除结束 } 后的任何逗号(
,
)(如果存在)!这必须是有效的 JSON 文件。
更改元数据后:
您应该看到一个浮动目录窗口。
如果没有,请进行下一步。
检查 jupyter_contrib_nbextensions 是否已安装
(pip freeze | grep jupyter_contrib_nbextensions)
。
打开 jupyter 并检查主页上“Clusters”选项卡旁边是否有一个“Nbextensions”选项卡。
打开“Nbclusters”选项卡,并取消选中“在没有明确兼容性的情况下禁用 nbextensions 配置(它们可能会破坏您的笔记本环境,但对于显示 nbextension 开发很有用)”框。
现在查找“目录 (2)”扩展并启用它。
现在打开笔记本时应该会看到目录。
如果没有,请进行下一步。
查看 toc2 扩展源,我们可以看到这是基于 Javascript 代码的客户端。
加载 Jupyter Notebook 时,模块 main.js 会添加到浏览器运行的 .js 中,并修改一些菜单命令。
要解决缓存问题,请使用“新”浏览器打开 Jupyter。 这可能是:
使用“干净”的浏览器,您应该能够打开笔记本并从目录扩展中看到导航栏。
现在该怎么办:
--port
选项)。那应该可以解决他的问题。考虑使用 https 而不是 http 以避免中间网络进行缓存。如果您的问题是在 Jupyter Notebook 中不显示目录,您可以在
waitInterval=0
文件中设置 require.js
(通常位于 C:\Users\User\anaconda3\Lib\site-packages\notebook\static\components\requirejs
)。