如何卸载源码安装的Python 修复Ubuntu默认Python版本异常
Ubuntu 22.04升级后默认Python版本为3.8问题排查与解决
问题现象
升级系统到Ubuntu 22.04后,默认Python版本仍为3.8,而非该版本系统自带的Python 3.10。初步检查确认系统内已经安装Python 3.9、3.10版本,排查多日未找到Python 3.8被配置为默认版本的位置。
问题更新:问题已解决
此前通过源码方式将Python安装到了/usr/local/bin目录,系统PATH优先级会优先读取该目录下的版本,忽略了/usr/bin目录下的系统更新Python版本,删除local目录下的对应Python文件后,系统已恢复正常运行。
排查命令与输出
- 执行版本切换命令
sudo update-alternatives --config python,输出如下:
update-alternatives: error: no alternatives for python
- 查看
/usr/bin目录下所有Python相关文件,执行ls /usr/bin/python*,输出如下:
/usr/bin/python /usr/bin/python3.10 /usr/bin/python3-config /usr/bin/python2 /usr/bin/python3.10-config /usr/bin/python3-futurize /usr/bin/python2.7 /usr/bin/python3.9 /usr/bin/python3-pasteurize /usr/bin/python3 /usr/bin/python3.9-config
- 查看当前
python3命令的指向路径,执行which python3,输出路径指向local目录,而非存放系统Python版本的/usr/bin目录:
/usr/local/bin/python3
- 查看当前默认Python3版本,执行*
python3 --version*,输出如下:
Python 3.8.0
- 确认系统版本,执行*
lsb_release -a*,输出如下:
No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04 LTS Release: 22.04 Codename: jammy
根因说明
- Ubuntu默认PATH环境变量优先级中,
/usr/local/bin排序高于/usr/bin,手动源码编译安装的软件默认会部署到/usr/local/bin路径下,会优先于系统自带同名程序被调用。 - 此前手动源码安装Python 3.8时未自定义安装路径,导致该版本成为默认调用的Python3;由于该版本未通过apt安装,也没有注册到
update-alternatives管理列表,因此执行版本切换命令时会提示无可用备选项。
修复步骤
- 先将
/usr/local/bin下的Python相关文件移动到备份目录,避免直接删除导致异常:sudo mkdir -p ~/python_backup && sudo mv /usr/local/bin/python* ~/python_backup/ - 重新打开终端,执行
which python3确认路径指向/usr/bin/python3,再执行python3 --version确认版本为Python 3.10即修复完成。 - 后续如果需要切换多Python版本,可通过
update-alternatives注册系统已安装的Python版本后统一管理,不要直接将源码编译的Python安装到默认全局路径覆盖系统版本。
内容的提问来源于stack exchange,提问作者TheCook
相关产品推荐
相关产品推荐

