如何定位Python环境变量配置位置并切换至Python3?
嘿,我之前也踩过这个坑!找不到Python环境变量配置位置的感觉真的很挠头,咱们一步步来排查和解决:
第一步:先搞清楚当前Python的真实路径
首先得明确系统里Python2和Python3到底装在哪,执行这两个命令:
which python which python3
第一个命令会输出当前python指向的2.7版本路径(比如/usr/bin/python或者你当初自定义的安装路径),第二个能拿到Python3的准确位置。
第二步:排查容易被遗漏的配置文件
你已经检查了.bash_profile和.bashrc,但还有几个地方可能藏着配置:
/etc/profile:系统级的全局配置,所有用户登录都会加载/etc/bash.bashrc:部分Linux发行版(比如Debian系)会用这个全局bash配置文件~/.profile:Ubuntu等系统默认会在登录shell里加载这个文件~/.bash_login:有些系统会优先加载这个,而不是.bash_profile- 还有可能是别名设置:直接执行
alias命令,看看有没有类似alias python='python2.7'的行——很多人会用别名快速切换版本,可能你当初这么设置过但忘了
如果手动找太麻烦,可以用grep批量搜索这些文件里的python相关配置:
grep -r "python2.7\|alias python" ~/ /etc/ --include="*.bashrc" --include="*.profile" --include="*.bash_profile"
第三步:区分登录shell和非登录shell的差异
有时候你日常用的终端是非登录shell,加载的配置文件和登录shell不一样。可以试试:
- 打开一个登录shell:
bash --login - 再执行
echo $PATH和which python,对比和之前的结果有没有不同——如果这里的python指向变了,说明配置藏在登录shell加载的文件里(比如.profile或者.bash_login)
第四步:临时切换与永久生效
如果找到了配置位置,把指向Python2.7的行改成Python3的路径就行。要是暂时没找到,也可以先临时救急:
- 临时生效(当前终端会话):要么设置别名,要么修改PATH优先级
# 方法1:用别名 alias python='python3' # 方法2:把Python3路径放到PATH最前面 export PATH=$(dirname $(which python3)):$PATH - 永久生效:把上面的
alias或者export命令加到你常用的配置文件里(比如~/.bashrc),然后执行source ~/.bashrc让修改立刻生效
第五步:极端情况——系统默认软链接
如果以上方法都没找到问题,那大概率是系统的默认软链接指向了Python2.7。检查一下:
ls -l /usr/bin/python
如果输出是类似lrwxrwxrwx 1 root root 9 Sep 1 2020 /usr/bin/python -> python2.7,说明是软链接的锅。这时候可以修改软链接,但要注意:系统里有些老工具可能依赖Python2,修改前最好备份
# 备份原链接 sudo mv /usr/bin/python /usr/bin/python.bak # 创建指向Python3的新软链接 sudo ln -s /usr/bin/python3 /usr/bin/python
要是担心影响系统工具,还是用别名的方式更稳妥,不会改动系统默认设置。
内容的提问来源于stack exchange,提问作者Jstuff
相关产品推荐
相关产品推荐

