OS X 10.8升级后Python点破


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安装是(new?),可以在/ Library / Frameworks / ..中找到:

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

知道如何摆脱sudo吗?


1
可能只是root有所不同$PATH。您已经安装了两个Python副本,并且对于所使用的版本并不小心。使用Apple Python(在/ System和/ usr中)或您安装的一个Python;看一看脚本的第一行,pip看看它在使用哪一个。
尼古拉斯·莱利

Answers:


134

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

sudo easy_install -U pip

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


1
感谢您的回答,但是相对于使用pip-installer(pip-installer.org/en/latest/installing.html)重新安装pip,我看不出为什么这种方法应该有所改变。尝试过并得到相同的错误,但尝试了其他操作并暂时变通了,但是很丑陋(请参阅更新的问题)。
geo_so 2012年

2
这将起作用,因为pip依赖于某些XCode命令行工具。但是,升级到Mountain Lion后,需要重新安装XCode。我自己尝试了这种方法,并且有效。
clwen 2012年

曾经有过相同的想法,两次,首先在App Store上,然后通过下载并“手动”安装。还要启动它,并在“首选项”上安装命令行包。奇怪,它与sudo一起使用,但并非没有。
geo_so 2012年

@gereon如果不使用sudo运行,错误消息是什么?DistributionNotFound?没有权限?如果是后者,则chmod错误消息指向的必要目录/文件。
clwen 2012年

1
当我运行sudo easy_install pip(带有或不带有-U)时,仍然出现DistributionNotFound错误。有人可以帮忙吗?
罗斯·史密斯

10

这对我有用

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

这在我尝试升级后以某种方式中断点数后对我有用。我在OSX 10.11.6上安装了python 2.7和3.x,现在看起来只有3.7,并且一切正常。
lacostenycoder

我使用的是OSX 10.14,这对我有用,但是,由于还安装了2.7,因此我不得不将“ pip”更改为“ pip3”。
T. Cervenka '18

5

我也有类似的错误,除了那sudo pip也不起作用。我正在使用python的“酿造”安装程序(与/ usr / local / bin符号链接),发现问题是pip和easy_install文件中的shebang被硬编码为,#!/usr/bin/python而不是#!/usr/local/bin/python,因此使用系统python版本而不是brew版本。

干杯汤姆


这些文件在哪里/在哪里?
Demis

抱歉,Demis的回复很晚,但是FWIW放在/ usr / local / bin中。您可以运行命令“哪个pip”或“哪个easy_install”来确定
Tom Close

3

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

xcode-select --install

然后,我能够安装ldap模块。


2

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

我所做的是在/ Library / Frameworks文件夹中安装了一个全新的Python安装,并从/ usr / local / bin对该链接进行了符号链接(由于某种原因,我的系统从/Library/Frameworks/Python.framework到/ 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 ==>这将在/ 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并正确点子。



1

在小牛上,我发现

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

而点子显示

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

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



0

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

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

不建议用于具有多个用户的计算机。


0

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

有人告诉我那个点子工具。实际上,这是识别您拥有的以及是否要更新它们的绝佳选择。另外,它很好地忽略了bonjour-py错误。

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.