conda:在environment.yml中设置环境特定通道

P. *_*eri 3 python anaconda conda

channels:如果我在文件中指定env.yml,则用于创建环境的包确实来自此通道。

$ cat env.yml 
channels:
  - conda-forge
  - nodefaults
dependencies:
  - python=3.8
  - numpy
Run Code Online (Sandbox Code Playgroud)

创建环境:

$ conda env create -n test -f env.yml
$ conda activate test
Run Code Online (Sandbox Code Playgroud)

这些软件包是通过正确的渠道安装的:

$ conda list 
# packages in environment at /home/mathurin/anaconda3/envs/test:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       1_gnu    conda-forge
Run Code Online (Sandbox Code Playgroud)

但是,当我稍后在这个环境中安装其他软件包时,它们仍然来自默认通道:

$ conda config --show channels 
channels:
  - defaults
Run Code Online (Sandbox Code Playgroud)

我如何告诉 conda 一劳永逸地设置此环境的某些通道,并且可以在 内部完成吗environement.yml

mer*_*erv 5

这是通过 YAML 无法实现的。但是,可以设置特定于环境的配置设置。

conda activate test
conda config --env --append channels conda-forge --append channels nodefaults
Run Code Online (Sandbox Code Playgroud)

关键是参数--env:这会编辑目录.condarc中的a envs/test/,该目录优先于任何系统级或用户级.condarc。但是,这两个.condarc文件都会被加载,因此如果您defaults在 中明确包含~/.condarc该文件,它仍然会显示在特定于环境的文件之后。