Ubuntu 16:pip install 安装到 python 3 而不是 2

Ubuntu 16:pip install 安装到 python 3 而不是 2

我升级到了 Ubuntu 16.04。我知道它只安装了 Python 3,但不知何故 Python 2 也装在里面了(我猜是作为依赖项)。没关系,因为我无论如何都会添加它。两个 Python 版本都存在,如下所示:

$ python --version
Python 2.7.11+
$ python3 --version
Python 3.5.1+

我的问题是 pip 和 pip3 都默认为 python3(并且也没有 pip2)。例如:

$ sudo -H pip install numpy
Requirement already satisfied (use --upgrade to upgrade): numpy in /usr/local/lib/python3.5/dist-packages
$ sudo -H pip3 install numpy
Requirement already satisfied (use --upgrade to upgrade): numpy in /usr/local/lib/python3.5/dist-packages

不管怎样,他们指的是不同的食物来源:

$ which pip
/usr/local/bin/pip
$ which pip3
/usr/local/bin/pip3

如何像在 Ubuntu 14.04 中一样将 pip 安装到 python2 并将 pip3 安装到 python3?

答案1

安装两者后

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

在 Ubuntu 16.04 下我可以简单地使用

pip2 install module
pip3 install module

分别为 Python2 或 Python3 安装所需的模块。

我希望这对你也有帮助并且有用!

答案2

面临同样的问题,通过重新安装 pip 和 python3 解除链接解决了这个问题,如下所示:

sudo python -m pip install -U --force-reinstall pip

答案3

我找到了一种可行的方法,希望在此过程中没有破坏任何东西。起初,我尝试编辑 /usr/local/bin/pip 中的第一行,将其从 python 3 编译器更改为 python 2 编译器,但出现错误,提示没有名为 pip 的模块!?

所以我想也许我需要为 Python 2 安装它。所以我去了那里并保存了他们提供的 get-pip.py 脚本。有一个警告说它可能会破坏操作系统,但由于 xenial 只使用 python3,我决定冒险一试。结果成功了:

$ sudo -H pip install numpy
Requirement already satisfied (use --upgrade to upgrade): numpy in /usr/local/lib/python2.7/dist-packages
$ sudo -H pip3 install numpy
Requirement already satisfied (use --upgrade to upgrade): numpy in /usr/local/lib/python3.5/dist-packages

还有一个潜在的问题,即东西在 /usr/local 中,muru 提到过,但我对此不太了解,如果东西继续工作,我不会抱怨。我添加软件包的唯一方法是 apt-get 和一些 .deb 文件(少数例外情况,如 chrome irc)。

答案4

我知道这是一个老话题,但由于没有任何答案能为我解决问题,而且我在网上找不到任何其他解决方案,所以我想分享最终对我有用的方法。

运行这两行解决了我的问题,现在 pip 为 python2 安装模块

curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py

python get-pip.py

相关内容