如何使用 .yml 文件更新现有的 Conda 环境
How to update an existing Conda environment with a .yml file
如何使用另一个 .yml 文件更新预先存在的 conda 环境。这在处理具有多个需求文件的项目时非常有用,即 base.yml, local.yml, production.yml
等
例如,下面是一个 base.yml
文件,包含 conda-forge、conda 和 pip 包:
base.yml
name: myenv
channels:
- conda-forge
dependencies:
- django=1.10.5
- pip:
- django-crispy-forms==1.6.1
实际环境是用:
conda env create -f base.yml
.
稍后,需要将其他包添加到 base.yml
。另一个文件,比如 local.yml
,需要导入这些更新。
之前实现此目的的尝试包括:
正在创建具有导入定义的 local.yml
文件:
channels:
dependencies:
- pip:
- boto3==1.4.4
imports:
- requirements/base.
然后 运行 命令:
conda install -f local.yml
。
这不起作用。有什么想法吗?
尝试使用 conda env update:
conda activate myenv
conda env update --file local.yml --prune
--prune
卸载从 local.yml
中删除的依赖项,正如@Blink 在 中指出的那样。
或者无需激活环境(感谢@NumesSanguis):
conda env update --name myenv --file local.yml --prune
请参阅 Conda 用户指南中的 Updating an environment。
alkamid 的回答是正确的,但我发现如果环境已经处于活动状态,Conda 将无法安装新的依赖项。停用环境首先解决这个问题:
source deactivate;
conda env update -f whatever.yml;
source activate my_environment_name; # Must be AFTER the conda env update line!
建议的答案部分正确。您需要添加 --prune 选项以同时卸载从 environment.yml 中删除的软件包。
正确命令:
conda env update -f local.yml --prune
如何使用另一个 .yml 文件更新预先存在的 conda 环境。这在处理具有多个需求文件的项目时非常有用,即 base.yml, local.yml, production.yml
等
例如,下面是一个 base.yml
文件,包含 conda-forge、conda 和 pip 包:
base.yml
name: myenv
channels:
- conda-forge
dependencies:
- django=1.10.5
- pip:
- django-crispy-forms==1.6.1
实际环境是用:
conda env create -f base.yml
.
稍后,需要将其他包添加到 base.yml
。另一个文件,比如 local.yml
,需要导入这些更新。
之前实现此目的的尝试包括:
正在创建具有导入定义的 local.yml
文件:
channels:
dependencies:
- pip:
- boto3==1.4.4
imports:
- requirements/base.
然后 运行 命令:
conda install -f local.yml
。
这不起作用。有什么想法吗?
尝试使用 conda env update:
conda activate myenv
conda env update --file local.yml --prune
--prune
卸载从 local.yml
中删除的依赖项,正如@Blink 在
或者无需激活环境(感谢@NumesSanguis):
conda env update --name myenv --file local.yml --prune
请参阅 Conda 用户指南中的 Updating an environment。
alkamid 的回答是正确的,但我发现如果环境已经处于活动状态,Conda 将无法安装新的依赖项。停用环境首先解决这个问题:
source deactivate;
conda env update -f whatever.yml;
source activate my_environment_name; # Must be AFTER the conda env update line!
建议的答案部分正确。您需要添加 --prune 选项以同时卸载从 environment.yml 中删除的软件包。 正确命令:
conda env update -f local.yml --prune