69

升级到 Mac OS X 10.8 (Mountain Lion) 并在尝试调用时出现以下错误$ pip

Traceback (most recent call last):
  File "/usr/local/bin/pip", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 2603, in <module>
    working_set.require(__requires__)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 666, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 565, in resolve
    raise DistributionNotFound(req)  # XXX put more info here
pkg_resources.DistributionNotFound: pip==1.1

更新:尝试通过再次执行安装过程来重新安装(使用http://www.pip-installer.org/en/latest/installing.html#using-the-installereasy_install),但没有成功,得到了相同的结果错误。

现在尝试以下方法:调用$ sudo pip并且上述错误消失。奇怪的是,在上述错误消息中找不到的目录指向 /System/Library/... 而 python 安装(新?)在 /Library/Frameworks/.. 中找到:

$ which python
/Library/Frameworks/Python.framework/Versions/Current/bin/python

知道如何摆脱 sudo 吗?

4

10 回答 10

135

用于easy_install将您更新pip到最新版本:

sudo easy_install -U pip

还要确保您安装了最新XCode版本(4.4 版)Command Line Tools

于 2012-07-28T20:28:14.743 回答
10

这对我有用

rm -f /usr/local/bin/easy_install
brew reinstall python
pip install --upgrade setuptools
pip install --upgrade pip
于 2014-12-16T06:02:30.927 回答
5

我有一个类似的错误,但sudo pip也没有工作。我正在使用python的“brew”安装(符号链接到/usr/local/bin),发现问题是pip和easy_install文件中的shebangs被硬编码为#!/usr/bin/python而不是#!/usr/local/bin/python,所以使用系统python版本而不是 brew 版本。

干杯,汤姆

于 2013-03-02T03:49:03.713 回答
3

我实际上无法执行建议的操作。我不得不执行:

xcode-select --install

然后我就可以安装 ldap 模块了。

于 2013-11-13T19:47:19.930 回答
2

我在这里尝试了所有答案,从重新安装 easy_install 到安装新的 python 版本,对我没有任何帮助。

我所做的是在 /Library/Frameworks 文件夹中安装一个新的 Python 安装,并从 /usr/local/bin 符号链接到那个(由于某种原因,我的系统有一个从 /Library/Frameworks/Python.framework 到 /系统/框架/Python.framework)。我的想法是将 /System/Library/Frameworks 文件保留在 /usr/bin 中供系统命令使用,并让 /usr/local/bin 指向 /Library/Frameworks 中安装的另一个“用户空间”。为了做到这一点:

  • 将 /System/Library/Framework/Python.framework 重命名为 _OLD_Python.framework

  • 删除 /usr/local/bin 中的每个 python 文件(使用 sudo rm /usr/local/bin/python*)和 /usr/local/bin/pip*(但不要触摸 /usr/bin)

  • 从官方网站(http://www.python.org/getit/)重新安装 python ==> 这将在 /Library/Framework 而不是 /System/Library/Framework 中重新安装 python

  • 然后启动 Applications/Python/Update Shell Profile.command 命令,确保您的路径使用该路径

  • 然后使用 /usr/local/bin 重新创建符号链接

    ln -s ../../Library/Frameworks/Python.framework/Versions/2.7/bin/python python

  • 最后,将 _OLD_Python.framework 重命名为 Python.framework(因为这是 /usr/bin/python 指向的路径)

键入“which python”应该指向 /Library/... 而不是 /System/Library。从那里你应该能够正确地重新安装easy_install和pip。

于 2013-09-25T19:34:09.387 回答
1

我通过使用自制软件重新安装 python 来解决这个问题: brew install python

于 2014-06-03T21:09:11.673 回答
1

在小牛队,我发现

ls -l `which python`
/usr/local/bin/python -> ../../../Library/Frameworks/Python.framework/Versions/2.7/bin/python

而 pip 显示

ls -l `which pip`
/usr/local/bin/pip

我重命名了旧的pip并创建了一个指向正确 pip 二进制文件的符号链接,现在一切都很好。这可能不是最好的解决方案,但它确实有效。

于 2013-11-04T04:10:16.630 回答
1

可以简单地更改权限,而不是更改所有权:

$ sudo chmod -R o+rX /Library/Python/2.7/site.packages

于 2013-05-23T21:46:01.753 回答
0

I usually had same issue with some project referencing bonjour-py in their requirements.txt, didn't know which or how to track that one at the moment.

And someone told me that pip-tool. It's actually a great alternative to identify which you have, and if you want to update them. And as a bonus it ignored well the bonjour-py error.

于 2013-10-14T16:25:32.550 回答
0

我更改了 Python 文件夹的权限(从 root 到我的用户),现在一切都对我有用:

sudo chown -R <your_user>:wheel /Library/Python/2.7/site-packages/

不推荐用于有多个用户的机器。

于 2012-07-30T18:22:34.210 回答