为什么要在conda环境中添加频道?

时间:2020-06-21 10:02:20

标签: python anaconda conda

一个人可以通过以下方式向conda添加频道(例如conda-forge)

conda config --add channels conda-forge

出于完整性考虑,由于conda 4.2可以通过以下方式将通道(例如conda-forge)添加到特定环境中

conda config --env --add channels conda-forge

see also this post)。

我想知道是否还有其他考虑,除了纯粹无需指定-c conda-forge来安装软件包的便利性之外,为什么还要向conda /特定conda环境添加(或不添加)通道?

添加渠道是否有优点/缺点?

1 个答案:

答案 0 :(得分:3)

主要是方便-即conda install命令足以表示任何通道优先级。例如,您可以在每次安装时手动指定the recommended Bioconda channel priorities

conda install -n metagenomics_env --override-channels -c conda-forge -c bioconda -c defaults kraken

但是以每个环境为单位进行设置,让我们忘记并设置

conda activate metagenomics_env
conda config --env --add channels defaults
conda config --env --add channels bioconda
conda config --env --add channels conda-forge
...
conda install -n metagenomics_env kraken

当一个项目的多样性不利于单一的全局渠道优先级时,这将非常有用。

一个应该意识到的问题是,运行conda env export总是会导致导出全局通道配置。尽管environment.yml中包含了构建ID,并且通常具有足够的区别以捕获原始通道,但是如果通道不在全局channels配置中,则如果重新创建环境的系统在其配置中没有该通道。


其他用途

值得强调的是,--env标志使每个配置选项都可以在特定于环境的基础上进行设置,而不仅仅是通道。这对于某些极端情况(例如specifying a subdir constraint(例如, win-32 win-64 )或启用实验性功能like pip_interop_enabled很有用仅在特定环境中。