如何用.yml文件更新现有的Conda环境

如何用另一个.yml文件更新预先存在的conda环境。当处理具有多个需求文件的项目时,这是非常有用的,例如base.yml, local.yml, production.yml等。

例如,下面是一个包含conda-forge、conda和pip包的base.yml文件:

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 . < / p >

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

之前的尝试包括:

创建带有导入定义的local.yml文件:

channels:


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

然后执行如下命令: conda install -f local.yml。< / p >

这行不通。任何想法吗?

217333 次浏览

尝试使用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!

建议的答案部分正确。你需要添加——删除选项来卸载从environment.yml中删除的包。 正确的命令:< / p >

conda env update -f local.yml --prune