IPython Notebook 会话中的多个目录和/或子目录?

Posted

技术标签:

【中文标题】IPython Notebook 会话中的多个目录和/或子目录?【英文标题】:Multiple directories and/or subdirectories in IPython Notebook session? 【发布时间】:2012-06-16 19:44:18 【问题描述】:

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

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

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

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

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

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

【问题讨论】:

笔记本服务器将能够浏览到不同的目录,只是还没有实现。如果它对您很重要,欢迎您来帮助编写它,虽然我们只是在为另一个版本做准备,所以它可能不会在那之前发布。 【参考方案1】:

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

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

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

如果需要,我愿意修改源代码

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

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

【讨论】:

这个答案现在无关紧要,因为 IPython 1.0 支持目录导航。我确实将 NotebookManager 链接固定到 0.13,这是当时的最新版本。【参考方案2】:

iPython notebook 的多目录支持(以及更普遍的“项目”支持)的接口和架构设计问题对于正确处理很重要。设计描述在

IPEP 16: Notebook multi directory dashboard and URL mapping

并且正在IPEP 16: Notebook multi directory dashboard and URL mapping · Issue #3166 · ipython/ipython讨论

【讨论】:

以上是关于IPython Notebook 会话中的多个目录和/或子目录?的主要内容,如果未能解决你的问题,请参考以下文章

Jupyter (IPython) Notebook 单元格中有多个 Audio 对象

iPython/Jupyter Notebook 和 Pandas,如何在 for 循环中绘制多个图?

IPython Notebook 多个检查点

在 jupyter/iPython notebook 脚本和类方法之间同步代码

如何更改Ipython Notebook默认路径

jupyter notebook怎么更改目录