提问者:小点点

如何使用更新更新现有Conda环境。yml文件


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

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

基础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

这是行不通的。有什么想法吗?


共3个答案

匿名用户

尝试使用conda环境更新:

conda activate myenv
conda env update --file local.yml --prune

--prune卸载从本地删除的依赖项。yml,正如@Blink在回答中指出的那样。

或者不需要激活环境(感谢@NumesSanguis):

conda env update --name myenv --file local.yml --prune

请参见《康达用户指南》中的更新环境。

匿名用户

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

conda env update -f local.yml --prune

匿名用户

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

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