我已经从我的 Mac (10.7.5) 中删除了 MacPorts,现在 Python 似乎已损坏。我正在尝试运行 scrapy,最后出现以下错误:
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
当我运行 python 并尝试导入该库时,出现与以下相同的错误:
$ 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
现在我该如何清理这个烂摊子呢?
假设这是系统Python,并且你安装了lxml
通过进入它pip
,并且 10.7.5 附带的 libxml2 版本对您来说已经足够了(我认为他们开始在 10.7 中发布一些最新版本 - 就像 2.7.x 一样 - 但我不确定),它应该很简单作为:
sudo pip uninstall lxml
sudo pip install lxml
这里的问题是lxml
是针对 MacPorts 构建的libxml2
/libxslt2
,而不是针对您的系统版本。理论上,可以通过以下方式重新指向依赖关系:install_name_tool
,但这更有可能惨败——或者,如果你真的很不幸,看起来可以工作,但当你真正需要它时却崩溃了……只需重建lxml
应该解决问题。如果你用过pip
,就像卸载/重新安装一样简单。
如果你没有使用过pip
,重做手册sudo python setup.py install
从 tarball 的干净副本,或重新执行sudo easy_install lxml
,或者做一个sudo pip install lxml
在你已经拥有的之上,将会probably工作,但这并不能保证。
如果我对狮子的看法是错的libxml2
,请在评论中说明,我将为您提供获取它的选项(无需重新安装 MacPorts)。
如果您想确定已经清理了所有内容,您可以随时将系统站点包恢复到默认状态,只需执行以下操作:
sudo rm -rf /Library/Python/2.7/site-packages/*
rm -rf ~/Library/Python/2.7/site-packages/*
然后,当然,您必须重新安装您安装的任何内容。 (如果你没有使用pip
上次,从sudo easy_install pip
然后使用pip
对于其他一切......)您只需通过执行以下操作就可以很好地了解您所安装的内容ls
在这些相同的目录中,但这不一定会告诉你how你安装了一切。 (例如,我安装了几个软件包pip install git+https://some.site/some/repo
,或者从二进制安装程序,或者在一种情况下我完全不知道......)所以,如果你没有其他选择,请考虑这是核选项 - 不是第一手段,但比重新安装 OS X 的热核选项更好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)