命令update-alternatives
❯ which pip
/home/ying/anaconda3/bin/pip
ying@192 ~ [2]> which pip
/usr/bin/pip
使用update-alternatives
对他们进行管理和切换
快捷方式 和 实际路径不可以相同
所以我这边选择了/usr/local/bin目录作为介质存储快捷方式,另外该快捷方式会自己创建我们只需选择目录即可。
sudo update-alternatives --install /usr/local/bin/pip pip /usr/bin/pip3 10
sudo update-alternatives --install /usr/local/bin/pip pip /home/ying/anaconda3/bin/pip3 20
卸载/退出管理
sudo update-alternatives --remove pip <pip实际路径>
sudo update-alternatives --remove pip /usr/bin/pip
sudo update-alternatives --remove pip /home/ying/anaconda3/bin/pip
选择版本
sudo update-alternatives --config pip
意外
眼尖的朋友可能一眼就看到了问题,我手动切换并没有改变pip的问题
❯ pip --version
pip 25.0 from /home/ying/anaconda3/lib/python3.11/site-packages/pip (python 3.11)
❯ sudo update-alternatives --config pip
There are 2 choices for the alternative pip (providing /usr/local/bin/pip).Selection Path Priority Status
------------------------------------------------------------0 /home/ying/anaconda3/bin/pip 20 auto mode1 /home/ying/anaconda3/bin/pip 20 manual mode
* 2 /usr/bin/pip 10 manual modePress <enter> to keep the current choice[*], or type selection number: ^C
❯ pip --version
pip 25.0 from /home/ying/anaconda3/lib/python3.11/site-packages/pip (python 3.11)
这是因为我的
/home/ying/anaconda3/bin路径在/usr/bin之前。
❯ echo $PATH
/home/ying/anaconda3/bin:/home/ying/anaconda3/condabin:/home/ying/.nvm/versions/node/v22.13.1/bin:/home/ying/.cargo/bin:/home/ying/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/go/bin:/home/ying/.local/share/JetBrains/Toolbox/scripts:/home/ying/go/bin
通过export临时将/usr/bin调到/home/ying/anaconda3/bin之前。就可以解决该问题。
❯ export PATH=/usr/bin:$PATH
❯ echo $PATH
/usr/bin:/home/ying/anaconda3/bin:/home/ying/anaconda3/condabin:/home/ying/.nvm/versions/node/v22.13.1/bin:/home/ying/.cargo/bin:/home/ying/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/go/bin:/home/ying/.local/share/JetBrains/Toolbox/scripts:/home/ying/go/bin
❯ pip --version
pip 23.0.1 from /usr/lib/python3/dist-packages/pip (python 3.11)
fish永久生效配置
bash,zsh可以直接修改.bashrc,.zshrc文件。如果是fish shell就不可以直接修改这种配置文件了。
# 临时修改 PATH 环境变量
set -gx PATH /usr/bin $PATH# 查看 pip 版本
pip --version# 若临时修改有效,永久修改 PATH 环境变量
nano ~/.config/fish/config.fish
# 在文件中添加 set -gx PATH /usr/bin $PATH
# 保存并退出文件# 使修改生效
source ~/.config/fish/config.fish# 再次查看 pip 版本
pip --version
其他
然后我发现我的fish为什么不能直接执行Juypter这些软件了,因为我没有添加它到环境变量中。
vim ~/.config/fish/config.fish
1 if status is-interactive2 # Commands to run in interactive sessions can go here3 end4 5 #交互进程外6
set -gx PATH /home/ying/anaconda3/bin $PATHset -gx PATH /usr/bin $PATH
source ~/.config/fish/config.fish