为何配置update-alternatives后仍无法修改Python默认版本?
原因分析
update-alternatives仅管理/usr/bin/python这个系统级符号链接的指向,你的实际执行的python命令优先级更高的来源覆盖了这个配置,常见优先级顺序为:shell命令别名 > PATH路径中靠前位置的可执行文件 > /usr/bin下的系统可执行文件。- 操作完
update-alternatives后未重启shell或刷新命令缓存,shell仍沿用之前缓存的Python路径。 - 系统存在虚拟环境(如conda)、用户本地安装的Python版本,其路径在PATH中优先级高于
/usr/bin。
排查与解决步骤
- 先确认当前
python命令的实际路径,执行:which python- 如果输出路径不是
/usr/bin/python,说明是PATH优先级问题:- 若路径为
~/.local/bin/python等用户级路径,可直接删除该路径下的python软链接,或者调整PATH优先级,在shell配置文件(~/.bashrc对应Bash、~/.zshrc对应Zsh)末尾添加export PATH=/usr/bin:$PATH,执行source 对应配置文件路径生效。 - 若路径为conda/anaconda等虚拟环境的Python路径,退出当前虚拟环境即可;若要关闭conda默认激活base环境,执行
conda config --set auto_activate_base false。
- 若路径为
- 如果输出路径不是
- 检查是否设置了python别名,执行:
alias | grep python
如果输出存在alias python='xxx/python3.8'类内容,删除shell配置文件中对应的别名配置,再source生效。 - 刷新shell命令缓存,执行
hash -r清除已缓存的命令路径,再执行python --version验证版本。 - 若以上操作无效,手动确认
/usr/bin/python的指向:执行ls -l /usr/bin/python,如果软链目标不是/etc/alternatives/python,执行命令手动修改:sudo ln -sf /etc/alternatives/python /usr/bin/python
内容的提问来源于stack exchange,提问作者user3668129
相关产品推荐
相关产品推荐

