32

IPython 文档页面建议打开 IPython 笔记本的多个不同会话是与不同目录或子目录中保存的笔记本交互的唯一方法,但这在任何地方都没有明确确认。

我面临一种情况,我可能需要与数百个不同的笔记本进行交互,这些笔记本根据不同的属性进行分类并存储在主目录的子目录中。我已将配置文件中的主目录(我们称之为/mainipython_notebook_config.py设置为默认目录。

当我启动 IPython 笔记本时,它确实显示了其中的所有已保存笔记本/main(但未中的子目录中保存的笔记本/main)。

如何实现一个 IPython 仪表板,它向我显示其中的笔记本/main 显示子目录,让我扩展子目录并从其内容中进行选择,或者只显示所有子目录中的所有笔记本?

通过每次启动新的 IPython 实例来做到这一点是完全不可能的。

如果我需要这种能力,我愿意修改源代码。这是一种非常基本的特性,我们需要它,而且令人惊讶的是,它不仅仅是默认的 IPython 行为。对于任何数量超过 10 或 15 的已保存笔记本,此功能是必要的。

4

2 回答 2

21

IPython 文档页面建议打开 IPython 笔记本的多个不同会话是与不同目录或子目录中保存的笔记本交互的唯一方法,但这在任何地方都没有明确确认。

是的,这是笔记本服务器的当前(临时)限制。notebook 待办事项列表中的多目录支持非常高(不幸的是,该列表很长,开发人员很少而且有日常工作),只是还没有。到 0.14(可能是秋季),您应该没有理由运行多个 nb 服务器,但目前这是多个目录的唯一选择。一个简单的初稿所缺少的只是:

  1. 将单个笔记本与目录相关联(相当简单),以及
  2. 用于简单文件系统导航的 Web UI(稍微不那么琐碎)。

如果我需要这种能力,我愿意修改源代码

如果您想在源代码中四处寻找,限制因素是NotebookManager,它与特定目录相关联。如果你调整 list_notebooks() 方法来处理子目录,你就完成了 90%。

我也对此很好奇,所以我在这里整理了一个简单的示例,它至少允许您在子目录中读取/运行/编辑/保存笔记本(步行深度限制为 2,但易于更改)。任何新的笔记本都将位于顶级目录中,并且没有用于移动它们的 UI。

于 2012-06-14T00:37:53.733 回答
2

iPython notebook 的多目录支持(更一般地是“项目”支持)的接口和架构设计问题对于正确处理很重要。设计描述于

IPEP 16:笔记本多目录仪表板和 URL 映射

并在IPEP 16 上进行讨论:笔记本多目录仪表板和 URL 映射 · 问题 #3166 · ipython/ipython

于 2013-12-10T21:12:45.693 回答