升级Conda至4.13.0及Python至3.9时遭遇依赖冲突问题咨询
我的Conda长期未更新,初始版本为4.1左右,配套Python 3.5.2。计划升级至Python 3.9,先后执行了以下命令:
conda update conda conda update anaconda conda update python conda update -all
虽有进展,但最终Conda停留在4.5.11版本、Python停留在3.5.6版本无法继续升级。执行conda update conda或conda update -n base -c defaults conda时,仅提示存在新版本4.13.0但不安装。尝试conda install conda=4.13.0时出现错误:
Solving environment: failed UnsatisfiableError: The following specifications were found to be in conflict: - conda=4.13.0 - pymc Use "conda info <package>" to see the dependencies for each package.
尝试conda install python=3.9或conda install python=3.7时,分别出现以下错误:
# 安装Python3.9时的错误 UnsatisfiableError: The following specifications were found to be in conflict: - healpy -> python=3.5 -> libffi=3.2 - healpy -> python=3.5 -> openssl=1.0 - healpy -> python=3.5 -> readline=7 - python=3.9
# 安装Python3.7时的错误 UnsatisfiableError: The following specifications were found to be in conflict: - _nb_ext_conf -> python=3.5 - python=3.7
请问执行conda remove pymc和conda remove healpy能否解决Python3.9的升级问题?是否会破坏现有环境?有没有更优的Conda/Anaconda/Python升级方案?
更新情况
执行conda remove pymc后再次尝试conda install conda=4.13.0,出现新错误:
UnsatisfiableError: The following specifications were found to be in conflict: - conda=4.13.0 -> python[version='>=3.7,<3.8.0a0'] -> openssl[version='>=1.1.1b,<1.1.2a'] - python=3.5
1. 仅移除pymc和healpy无法解决升级问题
从更新后的错误可以看出,即使删除pymc,Conda 4.13.0本身要求Python版本≥3.7,而当前base环境的Python还是3.5,这是核心冲突。仅移除pymc和healpy只能解决这两个包带来的依赖冲突,但base环境中还有其他绑定Python3.5的包(比如_nb_ext_conf),以及Python版本本身不兼容的问题,所以无法彻底解决升级到Python3.9的需求。
2. 移除pymc和healpy对现有环境的影响
执行conda remove pymc和conda remove healpy只会移除这两个包本身,以及直接依赖它们的其他包。如果你的现有环境中没有其他项目依赖这两个包,那么不会破坏核心环境功能;但如果有其他工具或项目依赖它们,这些依赖项也会被一并删除,可能导致相关功能无法使用。执行前可以用conda info pymc和conda info healpy查看它们的依赖关系,评估影响。
3. 更优的升级方案
方案一:创建全新Python3.9环境(最稳妥)
不改动原有base环境,直接新建一个独立的Python3.9环境,完全隔离旧环境的依赖冲突,命令如下:
# 创建包含Anaconda套件的Python3.9环境 conda create -n py39_env python=3.9 anaconda # 激活新环境 conda activate py39_env
原有base环境会被完整保留,需要使用旧版本Python时,执行conda deactivate切换回去即可。如果需要旧环境中的某些包,可以在新环境中重新安装。
方案二:逐步升级base环境(风险较高)
如果一定要升级base环境,需要先清理所有绑定Python3.5的依赖包,再逐步升级:
- 列出所有依赖Python3.5的包:
conda list | grep "python=3.5" - 移除这些冲突包(包括
_nb_ext_conf、healpy、pymc等):conda remove _nb_ext_conf healpy pymc [其他冲突包名称] - 先升级Python到3.7(满足Conda 4.13.0的最低要求):
conda install python=3.7 - 升级Conda到最新版本:
conda update conda - 最后升级到Python3.9:
conda install python=3.9
注意:此方法可能导致base环境中很多原有工具失效,建议先备份环境配置(conda env export > base_env_backup.yml)。
方案三:重新安装Anaconda/Miniconda(彻底解决)
直接下载对应Python3.9的最新版Anaconda/Miniconda安装程序,覆盖现有安装路径(提前备份重要项目和环境配置),或者安装到新路径。这种方法能完全摆脱旧环境的依赖问题,获得最干净的最新环境。
内容的提问来源于stack exchange,提问作者cmm0052

