为什么我的Mac电脑上Python的easy_install无法工作?

60

我有一台运行Python 2.6的Mac电脑。当我尝试使用easy_install时,我收到以下消息:

/usr/bin/easy_install-2.6:7: UserWarning: Module pkg_resources was already imported from /System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.pyc, but /Library/Python/2.6/site-packages is being added to sys.path
  from pkg_resources import load_entry_point
/usr/bin/easy_install-2.6:7: UserWarning: Module site was already imported from /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site.pyc, but /Library/Python/2.6/site-packages is being added to sys.path
  from pkg_resources import load_entry_point
Traceback (most recent call last):
  File "/usr/bin/easy_install-2.6", line 10, in <module>
    load_entry_point('setuptools==0.6c9', 'console_scripts', 'easy_install')()
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 271, in load_entry_point
    return False
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 2173, in load_entry_point
    deps = []
ImportError: Entry point ('console_scripts', 'easy_install') not found

我对此非常困惑,希望知道如何解决。之前我没有收到这个消息,然后安装了pip并卸载它后,easy_install不再起作用。我想知道如何解决这个问题,或者在Mac上恢复默认的Python或easy_install设置。

7个回答

155
  1. 检查 /usr/bin 和 /usr/local/bin 目录下的 easy_install 安装,并移除任何旧脚本:

sudo rm -f /usr/bin/easy_install*
sudo rm -f /usr/local/bin/easy_install*
  • 下载并运行distribute:

    curl -O https://svn.apache.org/repos/asf/oodt/tools/oodtsite.publisher/trunk/distribute_setup.py
    
    sudo python distribute_setup.py
    sudo rm distribute_setup.py
    
  • 再试一次,享受过程。例如:

    sudo easy_install pip
    

  • 3
    在安装Mountain Lion系统后,一切都出了问题,但这些指令完美地解决了问题。它们使得easy_install和pip正常运行,我随后能够升级我的virtualenv和virtualenvwrapper,现在一切都运转良好。 - shacker
    8
    安装了OSX 10.9 Mavericks后,这对我也有用。谢谢。 - caiman
    我得到了“-bash:/usr/bin/easy_install:没有那个文件或目录”的错误提示,可能是我忘记在末尾加星号了,你有什么解决方法吗? - Julian K
    不用担心,这意味着它在那里找不到它,但是有可能你把它们放在了 /usr/local/bin 中... 无论如何,请重新执行所有命令。 - mimoralea
    3
    请使用URL https://svn.apache.org/repos/asf/oodt/tools/oodtsite.publisher/trunk/distribute_setup.py,因为python-distribute.org没有上线。 - Jason
    显示剩余2条评论

    27
    我怀疑让 easy_install 再次工作的最简单方法是安装 distribute,它是distutils 的改进版本,并捆绑了自己的 easy_install 版本。安装很简单:
    curl -O http://python-distribute.org/distribute_setup.py
    /usr/bin/python2.6 distribute_setup.py
    

    如果您正在使用Homebrew,您可以执行sudo brew install distribute - Dana Woodman
    看起来distribute现在已经与Python配方一起提供了,但是脚本被放置在/usr/local/share/python/中,因此您可能会选择在/usr/local/bin中链接的旧版本的easy_install。请参见:https://github.com/mxcl/homebrew/wiki/Homebrew-and-Python - thom_nic
    非常感谢,这解决了我的Python安装问题!在升级pip+virtualenv后,pip、easy_install和其他工具都报错了。 - vdboor
    1
    好像安装 easy_install 一点都不容易。(耸肩) - yaobin

    9

    我在安装新的操作系统(Lion OSX)后遇到了同样的问题。安装Python并执行它之后:

    sudo easy_install ipython
    ipython
    

    我遇到了以下错误:

    Traceback (most recent call last):
      File "/usr/local/bin/ipython", line 8, in <module>
        load_entry_point('ipython==0.10.2', 'console_scripts', 'ipython')()
      File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 318, in load_entry_point
        return get_distribution(dist).load_entry_point(group, name)
      File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 2220, in load_entry_point
        raise ImportError("Entry point %r not found" % ((group,name),))
    ImportError: Entry point ('console_scripts', 'ipython') not found
    

    然后我意识到这是一个权限问题。如果我以sudo身份执行ipython脚本,它可以正常工作。

    sudo ipython
    

    所以我将文件夹 /Library/Python/2.7/site-packages/ 的所有权从根用户更改为我的用户 ()。

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

    只有当您没有多个使用Python的账户时,才使用更改所有权。希望这对您有用。最好的祝福。

    在这种情况下,使用“chmod”比“chown”更好。 - icktoofay

    5
    您的setuptools安装已损坏。在您的/usr/bin目录中,easy_install-2.6脚本只是一个包装器,它加载了Python安装中实际的easy_install模块,而后者丢失了。可能卸载pip时打破了指向它的指针(通常以.pth文件的形式存在于您的site-packages目录中),或者删除了整个包但没有删除/usr/bin/easy_install-2.6包装器脚本。
    最好的选择是按照setuptools PyPI页面上的说明从头重新安装setuptools

    3
    我遇到了同样的问题,怀疑是我安装Homebrew造成的。Homebrew似乎盲目地安装了自己版本的easy_install,并且搞砸了你当前正在运行的任何软件(足够多次以至于Homebrew认为这是一个问题)。我在这里找到了解决方案Upgraded Python on Snowleopard Using Homebrew now pip and easy_install don't work
    虽然我实际上是在Lion上运行的,但它仍然解决了我的问题。你只需要从http://pypi.python.org/pypi/ez_setup下载ez_setup.py - 通过终端运行ez_setup.py就可以开始工作了。

    1

    在按照类似步骤后,我遇到了类似的错误消息。我怀疑是因为我尝试安装distribute模块,它试图安装一个新版本的setuptools,但由于未能正确覆盖Mac OS X提供的setuptools而失败。但这只是一种猜测。

    我通过以下方式解决了我的问题。我发现目录/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python中有4个带有.OLD扩展名的文件。当我与事情正常时(通过Time Machine)同名但没有.OLD扩展名的文件进行比较时,我发现它们除了名称外都是相同的。所以我进行了以下重命名:

    setuptools.OLD.1305936263.57 -> setuptools
    setuptools-0.6c9-py2.6.egg-info.OLD.1305936263.57 -> setuptools-0.6c9-py2.6.egg-info
    pkg_resources.py.OLD.1305936263.57 -> pkg_resources
    site.py.OLD.1305936263.59 -> site.py

    我必须使用命令行和sudo mv,因为这些文件是由root所有。例如:sudo mv setuptools.OLD.1305936263.57 setuptools。您需要输入密码。

    我做的另一件事是清理/Library/Python/2.6/site-packages目录。我使用了Time Machine将其恢复到之前的状态。如果您没有Time Machine,则应该能够通过删除以distribute、easy-install、pip、pkg_resources、setuptools和site开头的任何文件或文件夹来恢复。

    如果这样做不起作用,请卸载该目录中可以卸载的任何模块。例如,如果您使用pip安装了模块,请使用pip uninstall。这样做的原因是安装可能会将文件复制到usr/local/bin和其他位置,pip会为您删除这些文件。

    接下来是时候删除任何剩余的模块了。重命名文件夹(以防有您稍后需要的内容)并创建一个新的空文件夹。

    重新安装您想要的模块,带着一点运气,您就可以回到业务中了...


    0

    我有一个非常类似的问题,但是我不得不将setuptools降级到它要求的确切版本0.6c9。现在我遇到了一个gcc错误。 - EddyR

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接