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

Mik*_*ike 6 python pip python-3.x

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

sudo apt-get install python-pip
sudo apt-get install python3-pip
Run Code Online (Sandbox Code Playgroud)

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

$ 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)
Run Code Online (Sandbox Code Playgroud)

但是,这些是旧版本,因此我执行以下操作:

$ sudo pip install pip --upgrade
Run Code Online (Sandbox Code Playgroud)

我得到这个:

$ 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)
Run Code Online (Sandbox Code Playgroud)

当我为某些软件包安装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.
Run Code Online (Sandbox Code Playgroud)

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

$ 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
Run Code Online (Sandbox Code Playgroud)

但是现在我得到了:

$ 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)
Run Code Online (Sandbox Code Playgroud)

那是对的吗?这有关系吗?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
Run Code Online (Sandbox Code Playgroud)

并产生以下结果:

$ 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)
Run Code Online (Sandbox Code Playgroud)

fur*_*ras 5

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

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

python -m pip install -U --force pip
Run Code Online (Sandbox Code Playgroud)

你也应该有pippip2pip2.7pip3pip3.5。你甚至可以有pip3.6pip3.7在同一时间。

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

你可以找到完整路径pip

which pip 
Run Code Online (Sandbox Code Playgroud)

并看到它是python的脚本。

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