在OS X 10.8升级后,Python pip被破坏

时间:2012-07-28 20:23:38

标签: python macos pip

升级到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安装是(new?)在/ Library / Frameworks /..:

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

知道如何摆脱sudo吗?

10 个答案:

答案 0 :(得分:129)

使用easy_install将您的pip更新为最新版本:

sudo easy_install -U pip

另外,请确保安装了最新XCode(版本4.4)Command Line Tools

答案 1 :(得分:9)

这对我有用

rm -f /usr/local/bin/easy_install
brew reinstall python
pip install --upgrade setuptools
pip install --upgrade pip

答案 2 :(得分:5)

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

干杯, 汤姆

答案 3 :(得分:3)

我实际上做不到建议。我不得不执行:

xcode-select --install

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

答案 4 :(得分:2)

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

我所做的是在/ Library / Frameworks文件夹中安装一个全新的Python安装,并从/ usr / local / bin安装一个符号链接(出于某种原因,我的系统有一个来自/ Library / Frameworks / Python的符号链接)。框架到/System/Frameworks/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 ==&GT;这将在/ 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指向的路径)

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

答案 5 :(得分:1)

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

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

答案 6 :(得分: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二进制文件,现在一切都很好。它可能不是最好的解决方案,但它确实有效。

答案 7 :(得分:1)

我通过使用自制程序重新安装python来修复此问题:brew install python

答案 8 :(得分:0)

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

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

不推荐用于拥有多个用户的计算机。

答案 9 :(得分:0)

我在bonjour-py中引用requirements.txt的某个项目通常遇到同样的问题,目前还不知道该跟踪哪个项目或如何跟踪该项目。

有人告诉我 pip-tool 。它实际上是识别您拥有的,以及是否要更新它们的绝佳选择。作为奖励,它忽略了bonjour-py错误。