gpt4 book ai didi

python - Conda 将一个 environment.yml 导入另一个

转载 作者:太空宇宙 更新时间:2023-11-04 00:23:48 31 4
gpt4 key购买 nike

考虑这样一种情况,您将具有依赖项的 Python 子模块导入到具有自身依赖项的项目中。假设子模块有它的 environment.yml 文件,而项目本身有一个 environment.yml 文件。

有没有一种方法可以创建包含这两种环境规范的环境?如果可以,您将如何着手进行此操作? (或者是否有更好/更优选的方式来处理这种情况?)

最佳答案

我猜你是同时开发子模块和项目的人,因为依赖项仍在 environment.yml 文件中。

选项 1:使用子模块的 environment.yml 更新项目环境

不幸的是,如果您的子模块依赖于 conda 包,这可能是您唯一的选择。

# First create the project environment
$ conda env create --force -f project_environment.yml

# Then update with submodule dependencies
$ conda env update -n project-env-name --file submodule_environment.yml

这不太理想,因为基本期望是您导入的库带有它们自己的依赖项。

选项2:将依赖项放入各自的requirements.txt文件中

这仅适用于可以通过 pip 从 PyPi 安装子模块依赖项的情况。首先将项目和子模块的依赖放入各自的requirements.txt文件中。

然后重组 environment.yml 文件,如下所示:

submodule_environment.yml

name: submodule-env-name
channels:
- defaults
dependencies:
- python=3.6.3 # no conda dependencies
- pip:
- -r requirements.txt # <--- submodule dependencies

project_environment.yml

name: project-env-name
channels:
- defaults
dependencies:
- python=3.6.3
- pip:
- -r requirements.txt # <--- project dependencies
- -r project/submodule/requirements.txt # <--- submodule dependencies

通过这种方式,您可以完全忽略submodule_environment.yml 文件,然后使用单个命令创建项目环境。

$ conda env create --force -f project_environment.yml

如果您的 submodule 依赖于 conda 包,则此方法将不起作用。如果是,那么选项 1 是您的最佳选择。

选项 3:打包子模块(理想)

假设子模块没有 conda 依赖项,那么最好从子模块中创建一个单独的包。创建一个 setup.py 并将所有依赖项放入 install_requires 字段中。这是 setup.py 的模板文件应该看起来像。

打包后,您可以执行以下操作:

  • 使用以下方法在本地安装:
    • pip 安装。
  • 上传到 github 或 bitbucket 并使用以下命令安装:
    • pip install git+https://github.com/username/submodule.git --upgrade
  • 上传至github或bitbucket,在pip下的requirements.txtenvironment.yml中添加如下内容:
    • git+https://github.com/username/submodule.git#egg=submodule

关于python - Conda 将一个 environment.yml 导入另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48158137/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com