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

conda: set environment specific channels in environment.yml

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

$ cat env.yml 
channels:
  - conda-forge
  - nodefaults
dependencies:
  - python=3.8
  - numpy

创建环境:

$ conda env create -n test -f env.yml
$ conda activate test

软件包已通过正确的渠道安装:

$ 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

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

$ conda config --show channels 
channels:
  - defaults

我如何告诉 conda 一劳永逸地为这个环境设置通道,它可以在 environement.yml 中完成吗?

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

conda activate test
conda config --env --append channels conda-forge --append channels nodefaults

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