如何用另一个.yml文件更新预先存在的conda环境。当处理有多个需求文件(即基础文件)的项目时,这非常有用。yml,地方。yml、生产。yml等。

例如,下面是一个基底。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创建base.yml。

稍后,需要将其他包添加到base.yml中。另一个文件,比如本地文件。Yml,需要导入这些更新。

之前的尝试包括:

创建本地用户。Yml文件导入定义:

channels:

dependencies:
  - pip:
    - boto3==1.4.4
imports:
  - requirements/base. 

然后执行如下命令: Conda install -f local.yml。

这行不通。任何想法吗?


当前回答

尝试使用conda env更新:

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用户指南中的更新环境。

其他回答

建议的答案部分正确。您还需要添加——prune选项来卸载从environment.yml中删除的包。 正确的命令:

conda env update -f local.yml --prune

尝试使用conda env更新:

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用户指南中的更新环境。

alkamid的答案是正确的,但是我发现如果环境已经处于活动状态,Conda无法安装新的依赖项。禁用环境首先解决这个问题:

source deactivate;
conda env update -f whatever.yml;
source activate my_environment_name; # Must be AFTER the conda env update line!