如何让conda/mamba仅使用environment.yaml中明确指定的Channel?
解决conda/mamba创建环境时忽略默认Channel的问题
问题根源
conda和mamba的默认逻辑是把环境文件(environment.yaml)里指定的channels,和.condarc/.mambarc配置中的channels合并,而不是直接替换。所以哪怕你在yaml里只写了conda-forge,全局配置里的bioconda还是会被自动追加进去。
两种有效解决方法
方法1:创建环境时添加命令行参数
用--override-channels参数强制忽略所有全局配置里的channels,只使用环境文件中指定的列表。
conda执行命令:
conda env create --file environment.yaml --override-channels
mamba执行命令:
mamba env create --file environment.yaml --override-channels
方法2:在环境文件中嵌入配置
如果不想每次创建都加命令行参数,可以直接在environment.yaml里嵌入conda配置,强制覆盖全局channels设置:
修改后的环境文件内容:
name: testenv channels: - conda-forge # 嵌入配置,强制使用指定channels,忽略全局.condarc设置 conda_config: channels: - conda-forge dependencies: - python
这样创建环境时无需额外参数,conda/mamba会优先遵循yaml里的嵌入配置,完全忽略全局配置中的channels。
内容的提问来源于stack exchange,提问作者Cornelius Roemer
相关产品推荐
相关产品推荐

