Github活页夹requirements.txt
Github binder requirements.txt
我有一个名为 notebooks_examples
的 github 存储库。在这个存储库中,我有几个文件夹,每个文件夹包含一个不同的 jupyter notebook,我想通过 MyBinder 执行它们。所有这些笔记本都相互独立,可能需要不同的包才能正常运行。如何让每个笔记本有不同的 'requirements.txt' 文件?
我知道我可以在存储库的根目录下放置一个,但这意味着它可以防止人们使用同一包的不同版本;这也意味着当 运行 给定笔记本时,即使在这种情况下需要 none,也会安装所有软件包。
我还看到我可以将配置文件放在名为 "binder" 的文件夹中,但我没有这样做。我尝试的结构如下。我在 notebooks_examples/notebook_1/README.md
有一个自述文件,我在这里有 2 个文件:notebooks_examples/notebook_1/binder/{notebook_1.ipynb,requirements.txt}
。但是,当我随后通过 Binder 启动笔记本时,我的导入工作 none,就好像没有看到配置文件一样。
有没有办法在不为每个新笔记本创建新存储库的情况下执行此操作?或者这根本不可能,因为活页夹的工作原理?
目前,每个存储库(或 repo)对应一个将由 repo2docker 构建的环境,这是构建 Binderhub 环境部分的基础技术。 (MyBinder.org 是 public 面向 public Binderhub 的联盟。)
并且配置文件要么放在根目录中,要么放在 binder/
目录中,并且不能放在与存储库根目录相关的任何其他位置,请参见 here.
因此,目前您无法避免为您需要的每个环境至少拥有一个存储库;但是,除非您的所有笔记本都需要完全不同的环境,否则您不需要为每个笔记本创建一个单独的存储库。
此外,您的笔记本可以保留在 Github 中的当前位置,您可以为每个笔记本放置 launch binder
链接,这些链接将启动与特定笔记本(或笔记本集合)的会话以及正确的环境。
概述了一种方法 here. However, in your case, nbgitpuller would copy in all the notebooks you currently have and then open a specific one. That might work fine for what you describe if you set up repositories which each needed environment and then create the URLs you need. As an alternative to nbgitpuller, you could specify in your 'environment' repo specifically what notebooks to get and where to place them using a start
config file where you could use curl
to fetch specific the notebooks from your all-inclusive repo. An example of using start
similar to that is here. So for your specific case you might want to determine what blocks of notebooks could be placed together and make a repository for each environment. Then the start
file will retrieve those notebooks when the session launches. The launch button URL configured from here 然后可用于指定在会话启动时打开哪个特定笔记本。
(关于 one-repo-to-one-environment 问题的完整披露:
如果您转到 here 并查找以 'I can’t think of a reason why you couldn’t store a requirements.txt...' 开头的部分,您会看到已经讨论过允许使用与基于环境的对应的当前存储库不同的其他解决方案。)
我有一个名为 notebooks_examples
的 github 存储库。在这个存储库中,我有几个文件夹,每个文件夹包含一个不同的 jupyter notebook,我想通过 MyBinder 执行它们。所有这些笔记本都相互独立,可能需要不同的包才能正常运行。如何让每个笔记本有不同的 'requirements.txt' 文件?
我知道我可以在存储库的根目录下放置一个,但这意味着它可以防止人们使用同一包的不同版本;这也意味着当 运行 给定笔记本时,即使在这种情况下需要 none,也会安装所有软件包。
我还看到我可以将配置文件放在名为 "binder" 的文件夹中,但我没有这样做。我尝试的结构如下。我在 notebooks_examples/notebook_1/README.md
有一个自述文件,我在这里有 2 个文件:notebooks_examples/notebook_1/binder/{notebook_1.ipynb,requirements.txt}
。但是,当我随后通过 Binder 启动笔记本时,我的导入工作 none,就好像没有看到配置文件一样。
有没有办法在不为每个新笔记本创建新存储库的情况下执行此操作?或者这根本不可能,因为活页夹的工作原理?
目前,每个存储库(或 repo)对应一个将由 repo2docker 构建的环境,这是构建 Binderhub 环境部分的基础技术。 (MyBinder.org 是 public 面向 public Binderhub 的联盟。)
并且配置文件要么放在根目录中,要么放在 binder/
目录中,并且不能放在与存储库根目录相关的任何其他位置,请参见 here.
因此,目前您无法避免为您需要的每个环境至少拥有一个存储库;但是,除非您的所有笔记本都需要完全不同的环境,否则您不需要为每个笔记本创建一个单独的存储库。
此外,您的笔记本可以保留在 Github 中的当前位置,您可以为每个笔记本放置 launch binder
链接,这些链接将启动与特定笔记本(或笔记本集合)的会话以及正确的环境。
概述了一种方法 here. However, in your case, nbgitpuller would copy in all the notebooks you currently have and then open a specific one. That might work fine for what you describe if you set up repositories which each needed environment and then create the URLs you need. As an alternative to nbgitpuller, you could specify in your 'environment' repo specifically what notebooks to get and where to place them using a start
config file where you could use curl
to fetch specific the notebooks from your all-inclusive repo. An example of using start
similar to that is here. So for your specific case you might want to determine what blocks of notebooks could be placed together and make a repository for each environment. Then the start
file will retrieve those notebooks when the session launches. The launch button URL configured from here 然后可用于指定在会话启动时打开哪个特定笔记本。
(关于 one-repo-to-one-environment 问题的完整披露:
如果您转到 here 并查找以 'I can’t think of a reason why you couldn’t store a requirements.txt...' 开头的部分,您会看到已经讨论过允许使用与基于环境的对应的当前存储库不同的其他解决方案。)