[英]Using pip or pip3 to install packages in Anaconda, Python, Jupyter
[英]pip or pip3 to install packages for Python 3?
我有一台装有 OS X El Captain 的 Macbook。 我认为它预装了Python 2.7
。 但是,我也安装了Python 3.5
。 当我开始使用Python 3
,我读到如果我想安装一个包,我应该输入:
pip3 install some_package
无论如何,现在当我使用
pip install some_package
我为Python 3
安装了some_package
。 我的意思是我可以导入它并毫无问题地使用它。 此外,当我在Terminal
只pip3
时,我收到了有关用法的消息:
Usage:
pip <command> [options]
这与我只输入pip
时得到的消息相同。
是不是说以前的版本不一样了,现在pip
和pip3
可以互换使用了? 如果是这样,为了争论,我如何为Python 2
而不是Python 3
安装包?
您的pip
是指向与pip3
相同的可执行文件路径的软链接。 你可以使用下面的命令来检查你的pip
和pip3
真实路径在哪里:
$ ls -l `which pip`
$ ls -l `which pip3`
您也可以使用以下命令了解更多详情:
$ pip show pip
$ pip3 show pip
当我们安装不同版本的python时,我们可能会创建这样的软链接
这与python
, python2
, python3
情况相同
如果您对它在不同情况下的发生方式感兴趣,请查看以下更多信息:
如果你有 python 2.x 然后安装了 python3,你的 pip 将指向 pip3。 您可以通过输入pip --version
来验证这一点,这与pip3 --version
相同。
在您的系统上,您现在拥有pip、pip2 和 pip3 。
如果需要,您可以将 pip 更改为指向 pip2 而不是 pip3。
当您安装python3
, pip3
被安装。 如果您没有另一个 python 安装(如 python2.7),则会创建一个链接,将pip
指向pip3
。
所以如果没有安装其他版本的python(python3除外), pip
是指向pip3
的链接。 pip
一般指向第一次安装。
举例说明:
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
。
这是一个棘手的话题。 最后,如果您调用pip
,它将调用pip2
或pip3
,具体取决于您如何设置系统。
我认为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 环境中运行。
如果您安装了 Python 2.7,我认为您可以使用pip2
和pip2.7
来安装专门用于 Python 2 的软件包,例如
pip2 install some_pacakge
或
pip2.7 install some_package
您可以使用pip3
或pip3.5
来安装专门用于 Python 3 的 pacakges。
在我的 Windows 实例上 - 我不完全了解我的环境 - 使用 pip3 安装 kaggle-cli 包有效 - 而 pip 没有。 我在 conda 环境中工作,环境似乎不同。
(fastai) C:\\Users\\redact\\Downloads\\fast.ai\\deeplearning1\\nbs>pip --version
pip 9.0.1 来自 C:\\ProgramData\\Anaconda3\\envs\\fastai\\lib\\site-packages (python 3.6)
(fastai) C:\\Users\\redact\\Downloads\\fast.ai\\deeplearning1\\nbs>pip3 --version
pip 9.0.1 来自 c:\\users\\redact\\appdata\\local\\programs\\python\\python36\\lib\\site-packages (python 3.6)
鉴于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 一无所知,所以我不得不添加一个额外的别名来处理这个问题。 这是一个黑客,但它有效,我知道它的作用:
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,就初学者友好性而言,这远低于我的预期。
在我的系统中,我使用更新替代品。
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,第一行就足够了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.