pip不适用于hombrew python 2.7安装


15

我已经使用自制软件安装了python,但无法从bash中调用pip。我尝试过修改.bash_profile,使其包括/ usr / local / bin / python和/ usr local / share / python都无济于事。

当我使用bash命令时:

find / -name 'pip'

我得到的唯一结果是:

/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip
/Users/Ivan/Library/Caches/pip
/Users/Ivan/Library/Logs/pip
/usr/local/Cellar/python/2.7.9/libexec/pip
/usr/local/Cellar/python/2.7.9/libexec/pip/pip
/usr/local/lib/python2.7/site-packages/pip

都不是可执行文件。

我真的不知道将$ PATH指向何处,因为找不到pip可执行文件。当我打开

/usr/local/lib/python2.7/site-packages/pip

要么

/usr/local/Cellar/python/2.7.9/libexec/pip/pip

我找到以下文件:

__init__.py         commands            operations
__init__.pyc        compat              pep425tags.py
__main__.py         download.py         pep425tags.pyc
__main__.pyc        download.pyc        req
_vendor             exceptions.py       status_codes.py
basecommand.py      exceptions.pyc      status_codes.pyc
basecommand.pyc     index.py            utils
baseparser.py       index.pyc           vcs
baseparser.pyc      locations.py        wheel.py
cmdoptions.py       locations.pyc       wheel.pyc
cmdoptions.pyc      models

都不是可执行文件。

我将感谢任何比我有更多经验的人的帮助。

编辑:我尝试了马可建议的步骤:

以下是步骤的结果:

  1. echo $ PATH显示一些目录:/ usr / local / bin:/ usr / local / mysql / bin:/ usr / bin:/ bin:/ usr / sbin:/ sbin:/ usr / local / bin:/ usr / texbin:/ opt / X11 / bin:/ usr / local / mysql / bin

  2. 哪个-a python返回:/ usr / local / bin / python / usr / local / bin / python

对于-a点不返回任何结果

  1. 哪个python返回:/ usr / local / bin / python

没有返回任何点

  1. ls -l $(哪个python)返回一个目录:lrwxr-xr-x 1 Ivan admin 33 May 5月17日08:59 / usr / local / bin / python-> ../Cellar/python/2.7.9/bin/蟒蛇

ls -l $(哪个pip)返回几个,包括我在原始帖子中显示的python文件

Answers:


19

通常,homebrew将安装formula/usr/local/Cellar/formula,然后在放置链接/usr/local/bin/formula

要使用已安装的公式,请确保/usr/local/bin位于中$PATH$PATH通过输入显示

echo $PATH

如果/usr/local/bin不在您的中$PATH,请将此行放在~/.profile文件末尾。

export PATH="/usr/local/bin:$PATH"

现在,pythons通过键入以下内容检查在OSX上找到的内容:

which -a python

/usr/bin/(Apple python)处应该找到一个python ,/usr/local/bin/而在Homebrew python 处应该找到一个。

which python

会向您显示哪个python首先在您中找到,$PATH 并在您调用时执行python

如果您想知道可执行文件在哪里,请键入以下内容以显示该可执行文件

ls -l $(which python)

看起来可能像这样:lrwxr-xr-x 1根轮68 7 Mai 13:22 python-> / usr / local / bin / python

pip同样适用。

如果您显示此步骤的结果,我们可能会更轻松地为您提供帮助。

-更新-

您已/usr/local/bin/python链接到/usr/local/Cellar/python/2.7.9/bin/python。-> brew install python工作。

显示,如果pip通过键入安装

brew list python | grep pip

你应该看到

/usr/local/Cellar/python/2.7.9/bin/pip

如果没有,请检查是否存在未使用完成的链接brew install。告诉你这样的事情:

"Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local"

要强制链接并覆盖所有冲突文件:

brew link --overwrite python

列出所有将被删除的文件:

brew link --overwrite --dry-run python

**没有标准的苹果/usr/bin/python**

链接/usr/local/Cellar/python/2.7.9/bin/python/usr/bin/python

ln -s /usr/local/Cellar/python/2.7.9/bin/python /usr/bin/python

这对于以开头的所有python脚本都是必需的#!/usr/bin/pythoneasy_install如果链接不存在,特别是将失败。

现在,您可以运行

easy_install pip

希望你正在进步


Marco,谢谢您的回答!请查看我对步骤的结果的原始问题-我已将其添加到
YoungPadawan,2015年

@YoungPadawan看起来您没有Apple标准/usr/bin/python。这不好,因为许多Python脚本都以开头#!/usr/bin/python。如果没有python,则会收到类似您的错误消息。使用brew link --dry-run python来检查,使用时将更改您的链接brew link --overwrite python。我们将为您提供点子;-)
Marco M. von Hagen 2015年

用于brew link --overwrite --dry-run python查看哪些文件将被覆盖。
Marco M. von Hagen

1
我勾选了您的答案,因为它使我走了正确的路,但最终这是一个权限问题。安装后,我得到了Warning: The post-install step did not complete successfully You can try again using brew postinstall python. I tried the brew postinstall python`命令,它使我找到了一些我无法访问的文件。现在我可以使用点子了!再次感谢
YoungPadawan 2015年

1
就我而言,问题是The post-install step did not complete successfully由于error: could not delete '/usr/local/lib/python2.7/site-packages/pip/__init__.py': Permission denied。手动删除该文件,然后brew postinstall python再次运行可修复该文件。
大卫·珀斯豪斯

5

如果brew正在管理您的python安装,并且pip不再符号链接(即,您键入“ which pip”并且没有结果),请从主目录尝试以下操作:

brew unlink python && brew link python

不知道旧方法是否还能继续工作(在我的机器上不行)。

现在确认它确实指向您的2.7安装pip --version(它将在目录输出中列出python主版本)。


4

并不是对原始问题的真正答案,但是如果有人因为安装了Homebrew的软件python/pip而无法工作而最终落在这里(即python指向系统python pip而未找到)那么原因可能是最近的更改(2017年夏季) Homebrew安装和链接python的方式。

解决方案是在~/.bash_profile和/或中添加以下内容~/.zshrc

export PATH="$(brew --prefix)/opt/python/libexec/bin:$PATH"

这将python指向python的brew版本,并为您提供帮助pip。有关更多信息,请参见brew info pythonhttps://github.com/Homebrew/homebrew-core/issues/15746下的警告部分。


2

默认情况下,Homebrew通过以下方式提供点子:brew install python。但是,您随后将在Mac上安装了两个Python,也可以通过以下方式安装它:

sudo easy_install pip

要验证您的Python软件包中安装了哪些文件,请尝试:

$ brew list python
/usr/local/Cellar/python/2.7.9/bin/pip
/usr/local/Cellar/python/2.7.9/bin/pip2
/usr/local/Cellar/python/2.7.9/bin/pip2.7
...

其中应包括pip

安装后,您应该通过以下方式对公式的已安装文件进行符号链接:

brew link python

应该会创建正确的符号链接(例如/usr/local/bin/pip指向Cellar/python/2.?.?/bin/pip

如果您有权限问题,可以通过以下方法解决:

sudo chgrp -R admin /usr/local /Library/Caches/Homebrew
sudo chmod -R g+w /usr/local /Library/Caches/Homebrew

并确保您的用户位于管理员组(id -Gn $USER)中。

修复权限后,sudo使用brew命令时请勿使用。

然后再次重新链接:

brew unlink python && brew link python

要测试空运行,请取消链接并运行:brew link -n python查看将链接的文件的brew链接。

链接成功后,请确保您的PATH系统变量具有/usr/local,如果没有,请添加:

export PATH=/usr/local/sbin:/usr/local/bin:$PATH

到您的~/.bashrc文件。

如果成功,您pip应该立即工作。


谢谢您的回答kenorb!问题的一部分是easy_install对我也不起作用。在bash中,我得到:-bash:/ usr / bin / easy_install:/ usr / bin / python:错误的解释器:没有这样的文件或目录
YoungPadawan

这意味着您尚未/usr/bin/python安装(通常应随OS X提供)。因此,请尝试按照建议的方式进行操作,即:brew install python && brew link python,然后将其添加/usr/local/bin到中PATH
kenorb 2015年

我不认为这brew install python && brew link python会把python放进去/usr/bin。我在中看到它usr/local/bin,但是在这里没有看到符号链接。我也已取消链接和链接python,并且没有任何变化。看上去brew的安装和链接没有把事情
放到

@YoungPadawan brew不执行任何操作/usr/bin,但/usr/local/bin。尝试:brew unlink python和空运行:brew link -n python列出应链接的所有文件,并检查是否pip存在。如果是,则不带再次运行-n
kenorb 2015年

感谢Kenorb,我找到了解决方案。最后,由于权限原因,安装失败。我修改了brew与之冲突的几个文件的权限,然后重新运行安装,现在一切正常。有关上述问题的评论中有更多详细信息。再次感谢您的回答,这对于帮助我解决问题确实很有帮助。
YoungPadawan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.