Debian 10升级至11后Anaconda Python优先级高于系统Python的问题修复咨询
问题描述
我已经成功将Debian系统从10升级到11版本。Debian 11默认Python版本是3.9,但执行python --version时返回的是旧版本(Anaconda的Python 3.7.11),因为Anaconda的优先级高于系统默认的Python 3.9.2:
raul@rbritto:~$ python --version Python 3.7.11
设置临时别名后可以调用系统Python 3.9.2:
raul@rbritto:~$ alias python='/usr/bin/python3.9' raul@rbritto:~$ python --version Python 3.9.2
/usr/bin目录下的Python相关文件列表:
raul@rbritto:~$ ls -l /usr/bin/python* -rwxr-xr-x 1 root root 3602816 Jul 14 05:11 /usr/bin/python2.7 lrwxrwxrwx 1 root root 9 Apr 5 2021 /usr/bin/python3 -> python3.9 lrwxrwxrwx 1 root root 16 Apr 5 2021 /usr/bin/python3-config -> python3.9-config -rwxr-xr-x 1 root root 5479736 Feb 28 2021 /usr/bin/python3.9 lrwxrwxrwx 1 root root 33 Feb 28 2021 /usr/bin/python3.9-config -> x86_64-linux-gnu-python3.9-config
请问如何永久解决该问题,使python命令默认指向系统的Python 3.9.2版本?
解决方案
我推荐以下几种可靠的方法,你可以根据自己的使用场景选择:
方法1:修改用户Shell配置文件(个人用户首选)
这种方法只对当前用户生效,不会影响系统其他用户,操作简单:
- 打开你的Shell配置文件,如果你用的是Bash,编辑
~/.bashrc;如果是Zsh,编辑~/.zshrc:nano ~/.bashrc - 在文件末尾添加一行别名配置:
alias python='/usr/bin/python3.9' - 保存并退出编辑器后,让配置立即生效:
source ~/.bashrc - 重启终端或者新开一个窗口,执行
python --version验证,应该会显示Python 3.9.2了。
方法2:使用update-alternatives管理系统默认Python(系统级生效)
这种方法是Debian/Ubuntu系统推荐的方式,会在系统层面设置默认Python版本,所有用户都会受到影响:
- 首先检查系统是否已经注册了Python的替代项:
如果返回update-alternatives --list pythonupdate-alternatives: error: no alternatives for python,说明还没注册,继续下一步。 - 注册系统的Python 3.9到替代项中(优先级设为1,数字越大优先级越高):
如果你还想保留Anaconda的Python作为可选选项,也可以把它注册进去:sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.9 1
(把sudo update-alternatives --install /usr/bin/python python /path/to/anaconda/bin/python 2/path/to/anaconda/bin/python换成你实际的Anaconda Python路径) - 选择默认的Python版本:
这时会弹出选项列表,输入对应Python 3.9的序号,按回车确认即可。sudo update-alternatives --config python - 验证:执行
python --version,应该已经指向系统的3.9.2了。
方法3:调整PATH环境变量优先级
问题的根源是Anaconda的路径在PATH环境变量中比/usr/bin靠前,导致系统先找到Anaconda的Python。你可以修改PATH让/usr/bin优先:
- 打开
~/.bashrc(或对应Shell的配置文件),找到Anaconda设置PATH的行,一般类似这样:export PATH="/path/to/anaconda/bin:$PATH" - 把
/usr/bin加到PATH的最前面,修改成:export PATH="/usr/bin:/path/to/anaconda/bin:$PATH" - 让配置生效:
source ~/.bashrc - 验证:执行
echo $PATH可以看到/usr/bin在Anaconda路径前面,再执行python --version确认版本。
注意事项
- 如果你的项目依赖Anaconda的Python环境,建议使用Anaconda的虚拟环境来管理,避免修改系统默认Python导致项目运行异常。
- 方法1和3只对当前用户生效,方法2是系统级的,适合多用户环境下统一设置默认Python版本。
内容的提问来源于stack exchange,提问作者Raul Britto
相关产品推荐
相关产品推荐

