pip或pip3来安装Python 3的包吗?

时间:2016-11-27 18:42:03

标签: python macos python-2.7 python-3.x pip

我有OS X El Captain的Macbook。我认为预先安装了Python 2.7。但是,我也安装了Python 3.5。当我开始使用Python 3时,我读到如果我想安装包,我应该输入:

pip3 install some_package

无论如何,现在我使用

pip install some_package

我为some_package安装了Python 3。我的意思是我可以导入它并毫无问题地使用它。此外,当我在pip3中输入Terminal时,我收到了有关用法的消息:

Usage:   
  pip <command> [options]

这与我输入pip时收到的消息相同。

这是否意味着在previos版本中,情况有所不同,现在pippip3可以互换使用?如果是这样,并且为了争论,我如何安装Python 2而不是Python 3的包?

10 个答案:

答案 0 :(得分:40)

您的pip是与pip3相同的可执行文件路径的软链接。 您可以使用以下命令检查pippip3实际路径的位置:

$ ls -l `which pip`
$ ls -l `which pip3`

您也可以使用以下命令了解更多详情:

$ pip show pip
$ pip3 show pip

当我们安装不同版本的python时,我们可以进行这样的软链接

  • 将默认点设置为某个版本。
  • 为不同版本制作不同的链接。

pythonpython2python3

的情况相同

下面是谁对在不同情况下如何发生感兴趣:

答案 1 :(得分:16)

如果你有python 2.x然后安装python3,你的pip将指向pip3。 您可以通过键入与pip --version相同的pip3 --version来验证这一点。

在您的系统上,您现在有 pip,pip2和pip3

如果你想要你可以改变pip指向pip2而不是pip3。

答案 2 :(得分:11)

安装python3时,会安装pip3。如果您没有其他python安装(如python2.7),则会创建一个将pip指向pip3的链接。

所以 pip是指向pip3 的链接,如果没有安装其他版本的python(python3除外)。 pip通常指向第一次安装。

答案 3 :(得分:5)

这是一个棘手的主题。最后,如果您调用pip,则会调用pip2pip3,具体取决于您设置系统的方式。

答案 4 :(得分:4)

我认为pippip2pip3不是指向同一可执行文件路径的软链接。请注意我的linux终端中的命令和结果:

mrz@mrz-pc ~ $ ls -l `which pip`
-rwxr-xr-x 1 root root 292 Nov 10  2016 /usr/bin/pip
mrz@mrz-pc ~ $ ls -l `which pip2`
-rwxr-xr-x 1 root root 283 Nov 10  2016 /usr/bin/pip2
mrz@mrz-pc ~ $ ls -l `which pip3`
-rwxr-xr-x 1 root root 293 Nov 10  2016 /usr/bin/pip3
mrz@mrz-pc ~ $ pip -V
pip 9.0.1 from /home/mrz/.local/lib/python2.7/site-packages (python 2.7)
mrz@mrz-pc ~ $ pip2 -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
mrz@mrz-pc ~ $ pip3 -V
pip 9.0.1 from /home/mrz/.local/lib/python3.5/site-packages (python 3.5)

如你所见,它们存在于不同的路径中。

pip3始终只在Python3环境中运行,就像pip2与Python2一样。 pip适用于适合上下文的环境。例如,如果你在Python3 venv中,pip将在Python3环境中运行。

答案 5 :(得分:3)

如果您安装了Python 2.7,我认为您可以使用pip2pip2.7来专门为Python 2安装软件包,例如

pip2 install some_pacakge

pip2.7 install some_package

您可以使用pip3pip3.5专门为Python 3安装pacakges。

答案 6 :(得分:0)

在我的Windows实例上 - 我并不完全了解我的环境 - 使用pip3安装kaggle-cli包工作 - 而pip没有。我在conda环境中工作,环境似乎不同。

  

(fastai)C:\ Users \ redact \ Downloads \ fast.ai \ deeplearning1 \ nbs&gt; pip   --version

     

来自C:\ ProgramData \ Anaconda3 \ envs \ fastai \ lib \ site-packages(python 3.6)的pip 9.0.1

     

(fastai)C:\ Users \ redact \ Downloads \ fast.ai \ deeplearning1 \ nbs&gt; pip3    - 版本

     从p:\ users \ redact \ appdata \ local \ programs \ python \ python36 \ lib \ site-packages

pip 9.0.1   (python 3.6)

答案 7 :(得分:0)

通过插图:

pip --version
  pip 19.0.3 from /usr/lib/python3.7/site-packages/pip (python 3.7)

pip3 --version
  pip 19.0.3 from /usr/lib/python3.7/site-packages/pip (python 3.7)

python --version
  Python 3.7.3

which python
  /usr/bin/python

ls -l '/usr/bin/python'
  lrwxrwxrwx 1 root root 7 Mar 26 14:43 /usr/bin/python -> python3

which python3
  /usr/bin/python3

ls -l /usr/bin/python3
  lrwxrwxrwx 1 root root 9 Mar 26 14:43 /usr/bin/python3 -> python3.7

ls -l /usr/bin/python3.7
  -rwxr-xr-x 2 root root 14120 Mar 26 14:43 /usr/bin/python3.7

因此,我的默认系统python(Python 3.7.3)中的pip pip3

答案 8 :(得分:0)

鉴于 somepath / venv 中已激活的Python 3.6 virtualenv,以下别名解决了macOS Sierra上的各种问题,其中pip坚持指向Apple的2.7 Python。

alias pip='python somepath/venv/lib/python3.6/site-packages/pip/__main__.py'

当我不得不做sudo pip时,此操作效果不佳,因为root用户对我的别名或virtualenv一无所知,因此我也必须添加一个额外的别名来处理此问题。这是一种hack,但可以,而且我知道它的作用:

alias sudopip='sudo somepath/venv/bin/python somepath/venv/lib/python3.6/site-packages/pip/__main__.py'

背景:

pip3不存在以开始(找不到命令 ),并且which pip将返回 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/ bin / pip ,Apple Python。

Python 3.6是通过macports安装的。

激活我要使用的3.6 virtualenv后,which python将返回 somepath / venv / bin / python

以某种方式pip install会做正确的事情并击中我的virtualenv,但是pip list会破坏Python 2.7软件包。

对于Python而言,这对初学者友好程度比我期望的要低。

答案 9 :(得分:0)

在我的系统中,我使用更新替代方案

sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip2 2

如果我想在它们之间切换,我使用以下命令。

sudo update-alternatives --config pip

注意:如果你只安装了 pip3 而没有安装 pip2,第一行就足够了。