如何将conda包固定到指定通道,避免更新时切换通道?
如何固定conda包到指定通道避免更新时切换?
你当前的配置是将defaults设为优先通道,conda-forge作为第二通道:
conda config --append channels conda-forge conda config --show channels # 输出: # channels: # - defaults # - conda-forge
通过conda install conda-forge::nlopt从conda-forge安装了nlopt,但执行conda update --all时,conda会因为通道优先级将其替换为默认通道版本:
conda update --all # 输出片段: # The following packages will be SUPERSEDED by a higher-priority channel: # nlopt conda-forge::nlopt-2.7.1-py311hdac7a7~ --> pkgs/main::nlopt-2.7.1-hd77b12b_0
要解决这个问题,你可以通过以下两种方式将包固定到指定通道:
方法1:使用conda命令添加固定规则
直接通过conda config命令将nlopt包固定到conda-forge通道:
conda config --add pinned_packages conda-forge::nlopt
执行后验证配置是否生效:
conda config --show pinned_packages # 预期输出: # pinned_packages: # - conda-forge::nlopt
方法2:手动编辑.condarc文件
找到你的.condarc配置文件(Windows路径为C:\Users\<你的用户名>\.condarc,Linux/macOS路径为~/.condarc),打开后添加pinned_packages字段:
channels: - defaults - conda-forge pinned_packages: - conda-forge::nlopt
保存文件后配置立即生效。
取消固定的方法
如果后续需要取消对nlopt的通道固定,执行以下命令:
conda config --remove pinned_packages conda-forge::nlopt
原理说明:pinned_packages中的规则会强制conda始终使用指定通道的对应包,优先级高于通道顺序设置,因此更新操作不会再替换该包的通道版本。
内容的提问来源于stack exchange,提问作者goweon
相关产品推荐
相关产品推荐

