切换Ubuntu系统默认Python版本
查看当前python版本及位置
- 查看当前python版本:
python --version
- 查看当前使用的python版本的位置
which python
切换Python版本
1. 使用系统自带的update-alternatives命令切换Python版本
-
首先给python2和python3设置优先级:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 100 sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 150
数值越大优先级越高(默认选择优先级最高的Python版本)。
-
查看并切换
sudo update-alternatives --config python
2. 使用别名修改(某个用户的)python版本
在待修改用户~/.bashrc
或~/.zshrc
中添加别名(alias),即添加如下内容:
alias python='/usr/bin/python2.7'
然后执行
source ~/.bashrc # 或 source ~/.zshrc
完成修改。
注意: 使用此方法为python指定别名后(以上面的2.7为例),在python3的conda环境下使用终端执行
python
依旧启动的是python2.7。
3. 系统自动选择Anaconda的python版本
当使用了Anaconda后,系统默认选用anaconda的python版本,执行which python
后发现当前调用的python位于anaconda下:
这是因为配置文件(~/.bashrc
或~/.zshrc
)中添加了export PATH="/home/xxx/anaconda3/bin:$PATH"
一句,在查找python时首先找到了anaconda中的python。因此这时方法1(使用update-alternatives)失效,方法2(使用别名)依旧可用。
上面的参考博客还提供了一种解决办法,就是把anaconda3/bin/
中的python删除或者改名,即
rm /home/xxx/anaconda3/bin/python
或
mv /home/xxx/anaconda3/bin/python /home/xxx/anaconda3/bin/python3.9.1
此时系统便可以查找到/usr/bin/
里面的python:
但是! 这样做就无法激活conda的base环境了,因为此时base环境便找不到了其python文件:
我自己尝试了将
anaconda3/bin/
中的python建立软连接指向自己需要的系统的python版本(这里以python2.7为例):ln -s /usr/bin/python2.7 /home/xxx/anaconda3/bin/python
。但是base内的很多库都是依赖之前的python3环境,强行修改后依旧无法激活base环境。
在此请教下大家有没有好的解决办法~