如何使用 .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