我有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版本中,情况有所不同,现在pip
和pip3
可以互换使用?如果是这样,并且为了争论,我如何安装Python 2
而不是Python 3
的包?
答案 0 :(得分:40)
您的pip
是与pip3
相同的可执行文件路径的软链接。
您可以使用以下命令检查pip
和pip3
实际路径的位置:
$ ls -l `which pip`
$ ls -l `which pip3`
您也可以使用以下命令了解更多详情:
$ pip show pip
$ pip3 show pip
当我们安装不同版本的python时,我们可以进行这样的软链接
python
,python2
,python3
下面是谁对在不同情况下如何发生感兴趣:
答案 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
,则会调用pip2
或pip3
,具体取决于您设置系统的方式。
答案 4 :(得分:4)
我认为pip
,pip2
和pip3
不是指向同一可执行文件路径的软链接。请注意我的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,我认为您可以使用pip2
和pip2.7
来专门为Python 2安装软件包,例如
pip2 install some_pacakge
或
pip2.7 install some_package
您可以使用pip3
或pip3.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-packagespip 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,第一行就足够了。