问题:pip或pip3为Python 3安装软件包?
我有一台配备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]
这是我输入just时得到的相同信息pip
。
这是否意味着在previos版本,事情是不同的,现在pip
和pip3
可以互换使用?如果是这样,并且为了参数起见,我该如何安装软件包Python 2
而不是Python 3
?
回答 0
您pip
是使用链接到同一可执行文件路径的软链接pip3
。您可以使用以下命令来检查您的真实路径pip
和pip3
实际路径:
$ ls -l `which pip`
$ ls -l `which pip3`
您也可以使用以下命令了解更多详细信息:
$ pip show pip
$ pip3 show pip
当我们安装不同版本的python时,我们可能会创建以下软链接到
- 将默认点设置为某些版本。
- 为不同的版本创建不同的链接。
这是同样的情况python
,python2
,python3
如果您对在不同情况下如何发生感兴趣,可以在下面获取更多信息:
回答 1
如果您安装了python 2.x,然后安装了python3,则您的pip将指向pip3。您可以通过键入来验证pip --version
与相同pip3 --version
。
在您的系统上,现在有了pip,pip2和pip3。
如果需要,可以将pip更改为指向pip2而不是pip3。
回答 2
安装后python3
,即pip3
会安装。如果你没有其他的Python安装(如python2.7),然后链接创建这点pip
来pip3
。
所以pip
通常指向首次安装。
回答 3
这是一个棘手的问题。最后,如果您调用pip
它,则将调用pip2
或pip3
,具体取决于您如何设置系统。
回答 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平台上,pip将在Python3环境下运行。
回答 5
通过插图:
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)中,my pip
是 pip3
。
回答 6
如果您安装了Python 2.7,我想您可以使用pip2
和pip2.7
安装专门针对Python 2的软件包,例如
pip2 install some_pacakge
要么
pip2.7 install some_package
您可以使用pip3
或pip3.5
安装专门用于Python 3的pacakges。
回答 7
在我的Windows实例上-并且我不完全了解我的环境-使用pip3安装kaggle-cli程序包有效-而pip无效。我在conda环境中工作,环境似乎有所不同。
(fastai)C:\ Users \ redact \ Downloads \ fast.ai \ deeplearning1 \ nbs> pip –version
来自C:\ ProgramData \ Anaconda3 \ envs \ fastai \ lib \ site-packages的pip 9.0.1(python 3.6)
(fastai)C:\ Users \ redact \ Downloads \ fast.ai \ deeplearning1 \ nbs> pip3 –version
来自c:\ users \ redact \ appdata \ local \ programs \ python \ python36 \ lib \ site-packages(python 3.6)的pip 9.0.1
回答 8
在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
它将返回Apple Python的/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/pip。
Python 3.6是通过macports安装的。
激活我想使用的3.6 virtualenv后,which python
将返回somepath / venv / bin / python
以某种方式pip install
可以做正确的事情并击中我的virtualenv,但pip list
会使Python 2.7包感到不安。
对于Python而言,这对初学者友好程度比我期望的要低。