如何在Anaconda base环境中免重装升级Python及全部关联包
Anaconda base环境无重装跨版本全量升级操作指南
前置准备
- 操作前先备份当前base环境的完整依赖清单,防止升级过程中依赖冲突导致环境异常,执行命令:
conda env export > base_env_backup.yml - 优先升级conda本体到最新稳定版,旧版本conda的依赖解析能力不足,跨大版本升级时极易出现无法解决的冲突,执行命令:
conda update -n base conda - 全程操作均在默认base环境下执行,无需新建独立虚拟环境,也不需要卸载现有Anaconda重装
跨版本升级完整流程
- 先把当前base环境下和Python3.7.10适配的所有软件包更到最新,减少后续跨版本时要解决的依赖冲突总量,执行命令:
conda update --all -n base - 执行Python解释器的跨大版本升级,根据自己选定的目标版本执行对应命令:
- 如果选择升级到Python3.8:
conda install python=3.8 - 如果选择升级到Python3.9:
conda install python=3.9
conda在执行该命令时,会自动将base环境内所有与旧Python版本绑定的软件包,替换为对应支持新Python版本的兼容版本,无需手动逐个调整单包的版本号
- 如果选择升级到Python3.8:
- Python版本替换完成后,再执行一次全量包升级,把当前环境内所有组件同步更新到与新Python版本匹配的最新稳定版,Anaconda本体附带的Navigator、客户端工具等组件也会在这一步同步完成升级,执行命令:
conda update --all -n base - 升级完成后做基础校验:执行
python --version确认解释器版本符合预期,再执行conda list检查是否有残留的绑定Python3.7的未替换包,若存在残留包,单独对该包执行conda update 包名即可完成替换。
注意:升级过程中别手动删旧Python版本对应的site-packages目录文件,也别加--force参数跳过依赖校验,不然很容易出现文件缺失、依赖不匹配的环境崩溃问题
常见疑问解答
为何Anaconda全量安装包内置Python版本低于官方Python源公布的版本
全量Anaconda安装包内置的Python版本,是经过官方与全量Anaconda生态组件做完整联动回归测试的稳定打包版本,打包节奏会跟随全生态的测试进度调整,不会盲目跟进单个Python包的最新发布节奏。而Anaconda Python源页面可查询到的Python3.9.2这类版本,是经过基础兼容性校验的单个Python安装包,没有经过和全量Anaconda内置组件的全链路测试,二者定位不同,不存在版本对应关系的问题。
Python3.8还是3.9版本的选择建议
- 如果优先追求与Anaconda内置组件的零兼容问题,优先选择Python3.8。这个版本与最新全量Anaconda安装包的内置版本完全匹配,所有官方组件都做过完整适配,不会出现导入报错、功能异常的问题。
- 如果需要用到Python3.9专属的语言特性(比如字典合并语法、改进的类型提示支持),可以直接选择Python3.9。由于conda的依赖解析机制会自动匹配所有组件的兼容版本,只要不强制跳过校验,基本不会出现大面积的组件兼容故障,最多可能碰到个别小众第三方包尚未推出3.9适配版本的情况,单独安装对应兼容版本即可解决。
内容的提问来源于stack exchange,提问作者peter.petrov
相关产品推荐
相关产品推荐

