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

时间:2017-02-20 19:32:11

标签: python django anaconda conda

这被问到here但从未回答。

如何使用另一个.yml文件更新预先存在的conda环境。在处理具有多个需求文件的项目时,这非常有用,例如#!/bin/sh # capture the seconds since epoch minus 2 days NOW=`expr $(date '+%s') - 172800` grep "After :" myFile.txt | cut -d ':' -f 2,4 | while read -r line; do # parse the string s into a date and capture the number of seconds since epoch date=$(date -d "$line" '+%s') # compare and print output if [ $date -lt $NOW ]; then echo "Date Less then 2 days, s=$line, date=$date, now=$NOW" else echo "Date Greater then 2 days, s=$line, date=$date, now=$NOW" fi done 等。

例如,下面是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。另一个文件,比如base.yml,需要导入这些更新。

以前尝试完成此任务包括:

使用导入定义创建local.yml文件:

local.yml

然后运行命令: channels: dependencies: - pip: - boto3==1.4.4 imports: - requirements/base.

这不起作用。有什么想法吗?

3 个答案:

答案 0 :(得分:76)

尝试使用conda env update

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

答案 1 :(得分:15)

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

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

答案 2 :(得分:5)

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

conda env update -f local.yml --prune