为啥 Python easy_install 不能在我的 Mac 上运行?
Posted
技术标签:
【中文标题】为啥 Python easy_install 不能在我的 Mac 上运行?【英文标题】:Why is Python easy_install not working on my Mac?为什么 Python easy_install 不能在我的 Mac 上运行? 【发布时间】:2011-08-26 02:47:42 【问题描述】:我有一台运行 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 设置。
【问题讨论】:
【参考方案1】:您的 setuptools 安装已损坏。 /usr/bin
目录中的 easy_install-2.6
脚本只是一个包装器,它在 Python 安装中加载实际的 easy_install
模块,而缺少后者。大概卸载pip
或者破坏了指向它的指针(通常以site-packages
目录中的.pth
文件的形式)或者删除了整个包但没有删除/usr/bin/easy_install-2.6
包装脚本。
最好的办法是按照instructions on the setuptools PyPI page 重新安装setuptools
。
【讨论】:
【参考方案2】:检查您的 /usr/bin 和 /usr/local/bin 是否安装了 easy_install 并删除所有旧脚本:
sudo rm -f /usr/bin/easy_install*
sudo rm -f /usr/local/bin/easy_install*
下载并运行分发:
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
【讨论】:
Mountain Lion 升级后,这些说明运行良好。这让 easy_install 和 pip 正常工作,这让我升级了我的 virtualenv 和 virtualenvwrapper,一切都又好了。 这在安装 OSX 10.9 Mavericks 后也对我有用。谢谢 我开始“-bash: /usr/bin/easy_install: 没有这样的文件或目录”,我可能忘记了最后的星号,关于如何解决我的困境有什么想法吗? 不用担心。这意味着它在那里找不到它,但有可能你在 /usr/local/bin 上有它们......无论如何,重新执行所有命令。 使用 URLhttps://svn.apache.org/repos/asf/oodt/tools/oodtsite.publisher/trunk/distribute_setup.py
,因为 python-distribute.org 没有启动。【参考方案3】:
我在安装新操作系统 (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/的所有权从root更改为我的用户()
sudo chown -R <your_user>:wheel /Library/Python/2.7/site-packages/
仅当您没有多个使用 python 的帐户时才使用更改所有权。
我希望它对你有用。
最好的
【讨论】:
在这种情况下,chmod
可能比chown
更好。【参考方案4】:
我有同样的问题,我怀疑是由于我安装了 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 即可参加比赛。
【讨论】:
【参考方案5】:Martijn Pieter 的回答是正确的。
-
转到http://pypi.python.org/pypi/setuptools#downloads
下载
setuptools-0.6c11-py2.7.egg
从您的下载目录运行:sudo ./setuptools-0.6c11-py2.7.egg
完成:-)
【讨论】:
我有一个非常相似的问题,但我不得不将 setuptools 降级到它要求的 0.6c9。现在我有一个 gcc 错误。【参考方案6】:在执行类似步骤后,我收到了类似的错误消息。我怀疑这是因为我尝试安装分发模块,并且它尝试安装新版本的 setuptools 不太好用,因为它未能正确覆盖 Mac OS X 提供的 setuptools。但这只是一个怀疑。
我通过执行以下操作解决了我的问题。我发现目录/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python
有 4 个名称中带有 .OLD 的文件。当我与没有 .OLD 的类似名称的文件进行比较时(通过 Time Machine),我发现它们除了名称之外是相同的。所以我做了以下重命名:
setuptools.OLD.1305936263.57 -> 设置工具 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
,因为这些文件归根用户所有。例如:sudo mv setuptools.OLD.1305936263.57 setuptools
。您必须输入密码。
我做的另一件事是清理/Library/Python/2.6/site-packages
目录。我使用 Time Machine 将其设置回之前的混乱状态。如果您没有 Time Machine,那么如果您删除任何以分发、easy-install、pip、pkg_resources、setuptools 和 site 开头的文件或文件夹,您应该能够恢复。
如果这不起作用,请从该目录中卸载您可以卸载的任何模块。例如,如果您使用 pip 安装模块,请使用 pip uninstall
。这样做的原因是安装可以将文件复制到usr/local/bin
和 pip 将为您删除的其他位置。
接下来是移除所有剩余模块的时候了。重命名文件夹(以防以后有您想要的东西)并创建一个新的空文件夹。
重新安装您想要的模块,运气好的话您就可以重新开始工作了...
【讨论】:
【参考方案7】:我怀疑让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
看来distribute
现在带有python 配方,但脚本被放入/usr/local/share/python/
,因此您可能会选择/usr/local/bin
中符号链接的旧版本easy_install。见:github.com/mxcl/homebrew/wiki/Homebrew-and-Python
非常感谢,这解决了我的 Python 安装问题! pip、easy_install等朋友升级pip+virtualenv后都报错。
听起来easy_install
的安装一点也不轻松。 (耸肩)以上是关于为啥 Python easy_install 不能在我的 Mac 上运行?的主要内容,如果未能解决你的问题,请参考以下文章
为啥easy_install会提取一些python鸡蛋而不是其他的?
为啥 python 框架安装指南会建议对一些必需的包使用 easy_install 而对其他包使用 pip?