pip(python2)和pip3(python3)可以共存吗?

时间:2019-04-23 21:51:31

标签: python python-3.x pip

我一直认为pip适用于Python 2,pip3适用于Python3。要安装不同版本的pip,请执行以下操作:

sudo apt-get install python-pip
sudo apt-get install python3-pip

然后我得到了预期的结果:

$ pip --version
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
$ pip3 --version
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

不过,那些是旧版本,所以我执行以下操作:

$ sudo pip install pip --upgrade

我明白了:

$ pip --version
pip 19.0.3 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
$ pip3 --version
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

当我为某些软件包安装pip3时,出现以下消息:

You are using pip version 8.1.1, however version 19.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

好吧,我已经运行过了,所以我尝试一下:

$ sudo pip3 install pip --upgrade
Installing collected packages: pip
  Found existing installation: pip 8.1.1
    Not uninstalling pip at /usr/lib/python3/dist-packages, outside environment /usr
Successfully installed pip-19.0.3

但是现在我明白了:

$ pip --version
pip 19.0.3 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)
$ pip3 --version
pip 19.0.3 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)

对吗?这有关系吗? Python 3.5的pip版本是否可用于安装Python 2软件包?

更新

根据@furas提供的答案,以下是我为正确安装pip和pip3的更新版本而运行的所有命令:

sudo apt-get install python-pip --yes
sudo apt-get install python3-pip --yes
sudo python3 -m pip install pip --upgrade
sudo python -m pip install pip --upgrade --force # this line fixes the pip install to point to the python2 version instead of the python3 version

并产生以下结果:

$ pip --version
pip 19.0.3 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
$ pip3 --version
pip 19.0.3 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)

1 个答案:

答案 0 :(得分:4)

每个Python都应拥有自己的pip,因为每个Python可能使用同一模块的不同版本,并且每个Python都将模块安装在不同的文件夹中。

您可以使用Python2pip安装Python2,它应该创建正确的文件pip

python -m pip install -U --force pip

您还应该拥有pippip2pip2.7pip3pip3.5。您甚至可以同时拥有pip3.6pip3.7

在控制台pip中写入内容,然后按Tab键,它将显示以pip开头的所有程序

您可以通过

找到pip的完整路径
which pip 

看到它是python的脚本。

不同的pip具有不同的第一行#!/usr/bin/python#!/usr/bin/python3.5。所有版本的其余代码都应该相同。