发布于2026-07-20 阅读(0)
扫一扫,手机访问
在 Ubuntu 上同时安装 Python2 和 Python3 是件挺常见的事,但不少人会遇到一个让人头疼的问题:输入 pip -V、pip2 -V、pip3 -V,结果全部指向了 Python3 的 pip 版本。明明系统里两个 Python 版本共存,pip 却“认亲不认理”,这到底是怎么回事?
先看看现象:
$ pip -V
pip 18.1 from /usr/lib/python3/dist-packages/pip (python 3.7)
$ pip2 -V
pip 18.1 from /usr/lib/python3/dist-packages/pip (python 3.7)
$ pip3 -V
pip 18.1 from /usr/lib/python3/dist-packages/pip (python 3.7)
三个命令都指向同一个 Python3 路径,显然 pip2 没有正确绑定到 Python2。问题出在哪儿?
先来处理 pip2。找到它的位置:
which pip2 # 查看pip2位置,我的是 /usr/bin/pip2
vim /usr/bin/pip2 # 使用vim打开pip2文件
打开后,内容大概是这样:
#!/usr/bin/python
# GENERATED BY DEBIAN
import sys
# Run the main entry point, similarly to how setuptools does it, but because
# we didn't install the actual entry point from setup.py, don't use the
# pkg_resources API.
from pip._internal import main
if __name__ == '__main__':
sys.exit(main())
关键就在第一行 #!/usr/bin/python。这里的 python 是一个软链接,指向的是 Python3 解释器。为什么?因为你之前安装 Python3 时,很可能修改了系统默认的 python 软链接,让它指向了 Python3,同时新建了 python3 软链接也指向 Python3,而 python2 软链接才指向 Python2。所以,当你运行 pip2 时,它实际上调用了 /usr/bin/python(即 Python3),自然就加载了 Python3 的 pip 模块。
解决办法很简单:把第一行的 #!/usr/bin/python 改成 #!/usr/bin/python2。当然,这不是绝对的,具体改什么要看你的系统里 python2 软链接是否存在且指向正确的 Python2 解释器。如果你的环境里 python2 可用,那就改成它,这样 pip2 就会乖乖去找 Python2 的 pip 了。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8