我已从我的Mac(10.7.5)中删除了MacPorts,现在Python似乎已被破坏.我正在尝试运行scrapy,最后得到以下错误:
<code>ImportError: dlopen(/Library/Python/2.7/site-packages/lxml-2.3.4-py2.7-macosx-10.7-intel.egg/lxml/etree.so, 2): Symbol not found: _exsltDateXpathCtxtRegister Referenced from: /Library/Python/2.7/site-packages/lxml-2.3.4-py2.7-macosx-10.7-intel.egg/lxml/etree.so Expected in: /usr/lib/libexslt.0.dylib in /Library/Python/2.7/site-packages/lxml-2.3.4-py2.7-macosx-10.7-intel.egg/lxml/etree.so </code>
当我运行python并尝试导入该库时,我得到如下错误:
<code>$python Python 2.7.2 (v2.7.2:8527427914a2, Jun 11 2011, 14:13:39) [GCC 4.0.1 (Apple Inc. build 5493)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> from lxml import etree Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: dlopen(/Library/Python/2.7/site-packages/lxml-2.3.4-py2.7-macosx-10.7-intel.egg/lxml/etree.so, 2): Symbol not found: _xsltDocDefaultLoader Referenced from: /Library/Python/2.7/site-packages/lxml-2.3.4-py2.7-macosx-10.7-intel.egg/lxml/etree.so Expected in: flat namespace in /Library/Python/2.7/site-packages/lxml-2.3.4-py2.7-macosx-10.7-intel.egg/lxml/etree.so </code>
我现在该如何清理这个烂摊子?
解决方法:
假设这是系统Python,并且你通过pip将lxml安装到它中,并且10.7.5附带的libxml2版本对你来说足够好了(我认为他们开始在10.7中发布一些新版本 – 就像在2.7.x-但我不记得肯定了,它应该是这样简单:
<code>sudo pip uninstall lxml sudo pip install lxml </code>
这里的问题是lxml是针对MacPorts libxml2 / libxslt2构建的,而不是针对您的系统版本.从理论上讲,有可能只使用install_name_tool重新定义依赖关系,但是这更可能失败 – 或者,如果你真的不走运,似乎工作但是当你真的需要它时崩溃…只需重新构建lxml应该修复问题.如果您使用了pip,那就像卸载/重新安装一样简单.
如果您没有使用pip,请从tarball的干净副本重新安装手动sudo python setup.py,或者重新执行sudo easy_install lxml,或者在已有的内容上执行sudo pip install lxml ,可能会有效,但不能保证.
如果我对Lion有合适的libxml2感到错误,请在评论中说明,我会给你选择它(不重新安装MacPorts).
如果您想确定已清理所有内容,只需执行以下操作即可将系统站点包恢复为默认状态:
<code>sudo rm -rf /Library/Python/2.7/site-packages/* rm -rf ~/Library/Python/2.7/site-packages/* </code>
然后,当然,你必须重新安装你安装的任何东西. (如果你上次没有使用pip,请从sudo easy_install pip开始,然后使用pip进行其他所有操作……)你可以通过在这些目录上执行ls来准确了解你已安装的内容,但是不一定会告诉你如何安装一切. (例如,我有一些我用pip install git https://some.site/some/repo安装的软件包,或者从二进制安装程序安装,或者在一种情况下我完全不知道……)所以,考虑一下核选项,如果你没有其他选择 – 不是第一手段,但比重新安装OS X的热核选项更好.
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!