nbextensions 中的目录 2 (toc2) 中的一些设置更改未显示在我在安装时打开的 Jupyter 笔记本中

问题描述 投票:0回答:2

我最近在 conda 环境中安装了 nbextensions,以添加向我的笔记本添加目录 (toc2) 的功能。但我在打开 jupyter 笔记本并安装扩展后执行此操作,扩展设置中的更改并未反映在我在安装过程中打开的笔记本上,而它反映在其他未打开的笔记本上。

我尝试关闭并重新启动内核,重新启动计算机,然后再次卸载并重新安装 nbextensions(遵循 github 票证上的 这些 说明)。这些方法都不能解决打开笔记本的问题。笔记本的副本继承了它的问题。

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

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

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

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

jupyter-notebook tableofcontents jupyter-contrib-nbextensions
2个回答
1
投票

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

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 文件。

更改元数据后:

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

您应该看到一个浮动目录窗口。

如果没有,请进行下一步。

第 1 步 - 这是 Jupyter 问题吗?

  • 检查 jupyter_contrib_nbextensions 是否已安装

    (pip freeze | grep jupyter_contrib_nbextensions)

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

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

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

现在打开笔记本时应该会看到目录。

如果没有,请进行下一步。

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

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

加载 Jupyter Notebook 时,模块 main.js 会添加到浏览器运行的 .js 中,并修改一些菜单命令。

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

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

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

现在该怎么办:

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

0
投票

如果您的问题是在 Jupyter Notebook 中不显示目录,您可以在

waitInterval=0
文件中设置
require.js
(通常位于
C:\Users\User\anaconda3\Lib\site-packages\notebook\static\components\requirejs
)。

© www.soinside.com 2019 - 2024. All rights reserved.