Sonatype Nexus不可用时如何绕过限制正常下载conda安装包
解决方案
问题根因
你显式指定通道依旧触发Nexus报错,是因为Conda默认会优先读取.condarc中配置的全局默认通道、通道别名,同时现有环境已缓存的索引数据也绑定了内部Nexus地址,并不会因为单次命令指定通道就跳过全局配置。
删除内部仓库后依赖求解卡住,是因为旧的Nexus索引缓存没有清理,或是现有环境中已安装的内部定制版包和公网包版本不兼容导致求解冲突。
可落地的解决方法
单次临时绕过(无需修改配置)
执行安装命令时加上--override-channels参数,该参数会强制忽略所有全局通道配置,仅使用命令行指定的通道,示例如下:conda install -c conda-forge numpy --override-channels修复现有环境求解卡住问题
先清理本地缓存的旧索引数据,再执行安装即可:# 清理所有索引缓存 conda clean -i # 可选:换用libmamba求解器大幅提升依赖求解速度,避免长时间卡顿 conda install -n base conda-libmamba-solver # 安装时指定求解器 conda install -c conda-forge numpy --solver=libmamba永久双容灾配置(Nexus故障自动切公网)
修改.condarc配置文件,把内部Nexus通道放在前列、公网通道放在后列,开启灵活通道优先级,实现内部可用时走内网、内部故障自动切公网,配置示例如下:
配置完成后无需后续手动调整,两种网络环境都能正常使用。channels: - defaults - conda-forge default_channels: - https://nexus-manager/repository/anaconda-proxy/main/ - https://repo.anaconda.com/pkgs/main/ - https://repo.anaconda.com/pkgs/r/ - https://conda.anaconda.org/conda-forge/ channel_priority: flexible allow_non_channel_urls: True
特殊情况说明
如果现有环境中存在从Nexus安装的内部定制版本包,公网不存在对应版本时会出现依赖冲突,可指定公网存在的版本号安装,或是新建环境规避历史版本冲突。
内容的提问来源于stack exchange,提问作者beginner_
相关产品推荐
相关产品推荐

