1

我最近在我的 conda 环境中安装了 nbextensions,以添加向我的笔记本添加目录 (toc2) 的功能。但是我在打开 jupyter notebook 的情况下执行了此操作,并且在安装扩展程序后,扩展程序设置的更改并没有反映在我在安装期间打开的笔记本电脑上,而在其他没有的笔记本电脑上却有。

我尝试关闭并重新启动内核,重新启动计算机,然后再次卸载并重新安装 nbextensions(按照github 票证上的这些说明进行操作)。这些事情都没有解决打开的笔记本的问题。笔记本的副本继承了它的问题。

需要注意的一件有趣的事情是,在我最后一次尝试重新安装 nbextensions 之后,第一次安装的设置更改被保留而不是恢复默认值(即 nbextensions 中的颜色设置是我之前将它们切换到的不同颜色卸载)。我不确定我是否完全卸载了 nbextensions 或者是否真的有可能。并且在重装后,第二次复飞中设置的进一步变化并没有反映在之后的任何笔记本上,比如在第一次选择后删除侧边栏目录设置,侧边栏仍然存在于某些笔记本电脑中。

我不确定发生了什么,但是:

1.)有没有办法让设置更改以普遍反映在笔记本上,特别是有一个目录?特别是在安装时打开的笔记本上?

2.) 有没有办法完全卸载 nbextensions,就像我的机器上从未存在过一样,所以我可以再试一次?

4

1 回答 1

1

第 0 步 - 这是笔记本元数据的问题吗?

toc2 模块将一些元数据添加到笔记本中。万一此元数据丢失、值错误或写入的默认值导致 ToC 不显示,请尝试以下操作:

打开笔记本并选择“编辑”->“编辑笔记本元数据”。

如果该部分存在,则删除该"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 文件。

更改元数据后:

  • 点击“编辑”按钮
  • 保存笔记本
  • 关闭浏览器窗口
  • 然后再次打开笔记本。

您应该会看到一个浮动的 TOC 窗口。

如果没有,请转到下一步。

第 1 步 - 这是 Jupyter 问题吗?

  • 检查 jupyter_contrib_nbextensions 是否已安装(pip freeze | grep jupyter_contrib_nbextensions)

  • 打开 jupyter 并检查主页上的“集群”选项卡旁边是否有一个“Nbextensions”选项卡。

  • 打开“Nbclusters”选项卡并取消选中“禁用没有明确兼容性的 nbextensions 配置(它们可能会破坏您的笔记本环境,但对于 nbextension 开发可能很有用)”框。

  • 现在查找“目录 (2)”扩展并启用它。

现在,当您打开笔记本时,您应该会看到 TOC。

如果没有,请转到下一步。

第 2 步 - 这是与浏览器相关的问题吗?

查看toc2 扩展源,我们可以看到这是基于 Javascript 代码的基于客户端的。

当您加载 Jupyter 笔记本时,模块 main.js 将添加到您的浏览器运行的 .js 中并修改一些菜单命令。

要放弃缓存问题,请使用“新”浏览器打开 Jupyter。这可能是:

  • 另一个浏览器(chrome、firefox、Edge..)
  • 或者您的“普通”浏览器处于隐身/InPrivate 模式

使用“干净”的浏览器,您应该能够打开笔记本并从 TOC 扩展中看到导航栏。

现在要做什么:

  • 如果 Clean 浏览器可以正常工作,但“普通”浏览器不能正常工作
    • 在普通浏览器中清除缓存,然后重试。
  • 如果 Clean 浏览器不起作用并且 Jupyter 正在您的本地计算机上运行。
    • 我们在这里遇到了一个错误。
    • 打开您的浏览器开发者工具,在 github 中打开一个工单,然后添加开发者工具的控制台输出。
  • 如果清除浏览器不起作用并且 Jupyter 正在远程计算机上运行
    • 你使用代理吗?或者您的 ISP 是否为此页面/页面的某些部分使用透明缓存(最后一个很难评估)。
      • --port尝试在另一个端口(使用选项)中运行 Jupyter 。那应该可以解决他的问题。考虑使用 https 而不是 http 以避免中间网络缓存。
于 2020-11-18T12:03:26.107 回答