【问题标题】:Github binder requirements.txtGithub binder requirements.txt
【发布时间】:2019-12-10 11:32:11
【问题描述】:

比如说,我有一个名为 notebooks_examples 的 github 存储库。在这个存储库中,我有几个文件夹,每个文件夹都包含一个不同的 jupyter notebook,我想通过 MyBinder 执行它。所有这些笔记本都是相互独立的,可能需要不同的包才能正常运行。如何让每个笔记本有不同的 'requirements.txt' 文件?

我知道我可以在存储库的根目录中放置一个,但这意味着它可以防止使用同一包的不同版本;这也意味着在运行给定的笔记本时,即使在这种情况下不需要任何包,也会安装所有包。

我还看到我可以将配置文件放在名为“binder”的文件夹中,但我没有这样做。我尝试的结构如下。我在notebooks_examples/notebook_1/README.md 有一个自述文件,这里有两个文件:notebooks_examples/notebook_1/binder/{notebook_1.ipynb,requirements.txt}。但是,当我通过 Binder 启动笔记本时,我的导入都不起作用,就好像没有看到配置文件一样。

有没有办法在不为每个新笔记本创建新存储库的情况下做到这一点?还是因为 binder 的工作原理而这根本不可能?

【问题讨论】:

    标签: python github jupyter-notebook android-binder


    【解决方案1】:

    目前,每个存储库(或存储库)都对应一个由repo2docker 创建的环境,这是构建 Binderhub 环境部分的基础技术。 (MyBinder.org 是一个面向公众的公共 Binderhubs 联盟。)
    并且配置文件要么放在根目录中,要么放在binder/ 目录中,并且不能位于相对于存储库根目录的任何其他位置,请参阅here
    因此,目前您无法摆脱为您需要的每个环境至少拥有一个存储库;但是,除非您的所有笔记本都需要完全不同的环境,否则您不需要为每个笔记本设置单独的存储库。

    此外,您的笔记本可以保留在 Github 中的当前位置,您可以放置​​ launch binder 链接,每个链接将启动与特定笔记本(或笔记本集合)和正确环境的会话。
    一种方法是概述here。但是,在您的情况下,nbgitpuller 会复制您当前拥有的所有笔记本,然后打开一个特定的笔记本。如果您设置每个所需环境的存储库,然后创建您需要的 URL,这可能适用于您所描述的内容。作为 nbgitpuller 的替代方案,您可以在“环境”存储库中使用start config file 指定要获取的笔记本以及放置它们的位置,您可以使用curl 从您的全包存储库中获取特定的笔记本。与此类似的使用start 的示例是here。因此,对于您的特定情况,您可能需要确定可以将哪些笔记本块放在一起并为每个环境创建一个存储库。然后start 文件将在会话启动时检索这些笔记本。从here 配置的启动按钮 URL 然后可用于指定在会话启动时打开哪个特定笔记本。

    (关于一对一环境问题的完整披露:
    如果您转到here 并查找以“我想不出您无法存储 requirements.txt... 的原因”开头的部分,您会看到有关允许其他解决方案的讨论比当前的 repo 对应一个基于环境的 repo。)

    【讨论】:

    • 我明白了。感谢您的详细回答。
    猜你喜欢
    • 2021-09-21
    • 2018-05-13
    • 2015-11-28
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多