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

问题描述 投票:0回答:2

如果我在

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

$ 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
内完成吗?

python anaconda conda
2个回答
5
投票

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

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

关键是

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


0
投票

您现在可以使用

environment.yml
语法在
channel::package
文件中执行此操作。请参阅这个SO答案这个Github问题

© www.soinside.com 2019 - 2024. All rights reserved.