如何在Ubuntu 20.04及更高版本中将pip2设为默认pip
在Ubuntu 20.04/22.04中同时运行Python2(Pip2)和Python3(Pip3)并设置pip默认指向pip2
核心需求
出于兼容性需求,需在Ubuntu 20.04和22.04系统中同时维护Python2(含pip2)和Python3(含pip3)环境,具体要求:
- 可通过
sudo ln -s /usr/bin/python2 /usr/bin/python或update-alternatives工具快速设置python命令默认指向Python2 - 实现
pip命令默认指向pip2存在难点:安装python3-pip包时,系统会强制将pip软链接指向/usr/bin/pip(对应Python3的pip)
临时修复方案(存在局限性)
手动修改软链接可临时实现pip = pip2,但系统更新相关包后,该设置会被还原:
sudo rm /usr/bin/pip sudo ln -s /usr/local/bin/pip2 /usr/bin/pip
Ubuntu 20.04环境安装步骤
先完成Python3环境部署,再安装Python2并手动安装适配的pip2:
sudo apt update sudo apt install python3 python3-dev python3-pip -y sudo apt install python python-dev -y curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py sudo python2 get-pip.py rm -f get-pip.py
当前环境状态示例
执行以下命令后得到的输出:
$ python -V Python 2.7.18 $ python2 -V Python 2.7.18 $ python3 -V Python 3.8.10 $ pip -V pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8) $ pip2 -V pip 20.3.4 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7) $ pip3 -V pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8) $ ls -la /usr/bin/pip* -rwxr-xr-x 1 root root 365 Jul 13 2021 /usr/bin/pip -rwxr-xr-x 1 root root 367 Jul 13 2021 /usr/bin/pip3 $ ls -la /usr/local/bin/pip* -rwxr-xr-x 1 root root 221 Nov 22 13:53 /usr/local/bin/pip -rwxr-xr-x 1 root root 221 Nov 22 13:53 /usr/local/bin/pip2 -rwxr-xr-x 1 root root 221 Nov 22 13:53 /usr/local/bin/pip2.7 $ which -a pip /usr/local/bin/pip /usr/bin/pip /bin/pip $ pip -V pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8) $ /usr/local/bin/pip -V pip 20.3.4 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
补充说明
我明确知晓Python2已停止维护,且最佳实践是使用virtualenv隔离不同版本的Python环境。当前方案仅为过渡使用,最终会将默认Python和pip切换至版本3,但目前有大量脚本依赖pip install命令而非规范的python -m pip install,因此需要先搭建兼容环境。
内容的提问来源于stack exchange,提问作者johnymachine
相关产品推荐
相关产品推荐

