我已从我的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
Run Code Online (Sandbox Code Playgroud)
当我运行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
Run Code Online (Sandbox Code Playgroud)
我现在该如何清理这个烂摊子?
假设这是系统Python,你lxml通过它安装到它pip,并且10.7.5附带的libxml2版本对你来说已经足够了(我认为他们开始在10.7中发布一些新版本 - 就像在2.7.x中一样 - 但是我不能记得肯定),它应该是这样简单:
sudo pip uninstall lxml
sudo pip install lxml
Run Code Online (Sandbox Code Playgroud)
这里的问题是lxml针对MacPorts libxml2/ 构建的libxslt2,而不是针对您的系统版本.从理论上讲,它可能只是重新定位依赖关系install_name_tool,但更可能失败 - 或者,如果你真的很不幸,似乎工作但是当你真的需要它时崩溃......只是重建lxml应该解决问题.如果您使用过pip,那就像卸载/重新安装一样简单.
如果你没有使用pip,sudo python setup.py install从一个干净的tarball副本重做手册,或重新做sudo easy_install lxml,或做一个sudo pip install lxml你已经拥有的,可能会工作,但这不能保证.
如果我对Lion libxml2的评价不合适,请在评论中说出来,我会给你选择它(不重新安装MacPorts).
如果您想确定已清理所有内容,只需执行以下操作即可将系统站点包恢复为默认状态:
sudo rm -rf /Library/Python/2.7/site-packages/*
rm -rf ~/Library/Python/2.7/site-packages/*
Run Code Online (Sandbox Code Playgroud)
然后,当然,你必须重新安装你安装的任何东西.(如果您pip上次没有使用,请先使用sudo easy_install pip,然后再使用pip其他所有内容......)您只需ls在相同的目录上执行操作就可以很好地了解已安装的内容,但这并不一定能告诉您你是如何安装的 (例如,我有一些我安装的软件包pip install git+https://some.site/some/repo,或者来自二进制安装程序,或者在一种情况下我完全不知道......)所以,如果你别无选择,可以考虑这个核选项 - 不是第一个手段,但比重新安装OS X的热核选项更好.
| 归档时间: |
|
| 查看次数: |
2671 次 |
| 最近记录: |