Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除了MacPorts,现在Python被破坏了_Python - Fatal编程技术网

删除了MacPorts,现在Python被破坏了

删除了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

我已经从我的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
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
是针对MacPorts
libxml2
/
libxslt2
构建的,而不是针对您的系统版本。从理论上讲,使用
install\u name\u tool
重新定位依赖项是可能的,但这更可能导致严重的失败,或者,如果你真的不走运,看起来工作正常,但在你真正需要时崩溃……只要重新构建
lxml
就可以解决问题。如果您使用的是
pip
,那么卸载/重新安装就很容易了

如果您没有使用
pip
,那么在tarball的干净副本上重新执行手动
sudo python setup.py安装
,或者重新执行
sudo easy\u install lxml
,或者在现有的基础上执行
sudo pip install lxml
,可能会起作用,但这不能保证

如果我对Lion使用Delegate
libxml2
的说法有误,请在评论中这样说,我将为您提供获取它的选项(无需重新安装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
时遇到了困难,我对它仍然不起作用并不感到惊讶……太棒了,谢谢!把一切都清理干净了,现在又开始工作了。