删除了MacPorts,现在Python被破坏了
我已经从我的Mac(10.7.5)中删除了MacPorts,现在Python似乎已经崩溃了。我正在尝试运行scrapy,最后出现以下错误:删除了MacPorts,现在Python被破坏了,python,Python,我已经从我的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: /Li
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
Python 2.7.2(v2.7.2:8527414a2,2011年6月11日,14:13:39)
[GCC 4.0.1(苹果公司5493版)]关于达尔文
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>从lxml导入etree
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ImportError:dlopen(/Library/Python/2.7/site-packages/lxml-2.3.4-py2.7-macosx-10.7-intel.egg/lxml/etree.so,2):未找到符号:\u xsltDocDefaultLoader
引用自:/Library/Python/2.7/site-packages/lxml-2.3.4-py2.7-macosx-10.7-intel.egg/lxml/etree.so
应为:平面命名空间
在/Library/Python/2.7/site-packages/lxml-2.3.4-py2.7-macosx-10.7-intel.egg/lxml/etree.so中
现在我该如何清理这个烂摊子呢?假设这是系统Python,您通过
pip
将lxml
安装到系统中,10.7.5附带的libxml2版本对您来说已经足够好了(我想他们开始在10.7中发布一些最新版本,就像在2.7.x中一样,但我记不清了),它应该简单到:
sudo pip uninstall lxml
sudo pip install lxml
这里的问题是,lxml
是针对MacPortslibxml2
/libxslt2
构建的,而不是针对您的系统版本。从理论上讲,使用install\u name\u tool
重新定位依赖项是可能的,但这更可能导致严重的失败,或者,如果你真的不走运,看起来工作正常,但在你真正需要时崩溃……只要重新构建lxml
就可以解决问题。如果您使用的是pip
,那么卸载/重新安装就很容易了
如果您没有使用pip
,那么在tarball的干净副本上重新执行手动sudo python setup.py安装
,或者重新执行sudo easy\u install lxml
,或者在现有的基础上执行sudo pip install lxml
,可能会起作用,但这不能保证
如果我对Lion使用Delegatelibxml2
的说法有误,请在评论中这样说,我将为您提供获取它的选项(无需重新安装MacPorts)
如果您想真正确保已清理所有内容,您可以始终将系统站点包恢复到默认状态,只需执行以下操作:
sudo rm -rf /Library/Python/2.7/site-packages/*
rm -rf ~/Library/Python/2.7/site-packages/*
然后,当然,你必须重新安装你安装的任何东西。(如果您上次没有使用
pip
,请从sudo easy\u install pip
开始,然后在其他所有目录中使用pip
)只需在这些目录上执行ls
,您就可以非常清楚地了解您到底安装了什么,但这并不一定能告诉您如何安装所有内容。(例如,我有两个安装了pip-install-git的软件包+https://some.site/some/repo<或代码>,或者从二进制安装程序,或者在一个案例中,我完全不知道……所以,如果你没有其他选择而不是第一个选择的话,请考虑这是核选择。但比重新安装OSX的热核选项更好。通过重新安装XSLT库?您的MacPorts安装提供了这些,现在的lxml
(一个附加库)是b0rken。请参阅@MartijnPieters:Lion用户的建议已经过时了。我相信Lion已经提供了可用的libxml2
和libxslt2
(尽管我可能再次出错,即使我错了,我怀疑您今天是否想明确要求2.7.3版…)请确认以下内容:1。这是苹果提供的Python(/usr/bin/Python
)?2.您没有非Apple提供的Python安装。3.在/usr/lib/libxml2.dylib
中有一些东西。4.如果运行xml2 config--version
,它会报告2.7.0或更高版本的内容。那么:您是如何安装lxml的?(pip
,easy_安装
,下载tarball/extract/python setup.py安装
,或其他方式)?我在安装lxml
之后就遇到了同样的问题。但是考虑到我在OS X 10.6.8上安装gcc
时没有使用Xcode,然后又在编译lxml
时遇到了困难,我对它仍然不起作用并不感到惊讶……太棒了,谢谢!把一切都清理干净了,现在又开始工作了。