将 lxml.etree 导入到 python 时出现错误

问题描述 投票:0回答:5

我在我的Mac上安装了lxml,当我像这样输入Python时

localhost:lxml-3.0.1 苹果$ python
Python 2.7.3(v2.7.3:70274d53c1dd,2012 年 4 月 9 日,20:52:43)
达尔文上的 [GCC 4.2.1(Apple Inc. build 5666)(点 3)]
输入“帮助”、“版权”、“制作人员”或“许可证”以获取更多信息。
>>> 从 lxml 导入 etree
回溯(最近一次调用最后一次):
  文件“”,第 1 行,位于
导入错误:dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/lxml-3.0.1-py2.7-macosx-10.6-intel.egg/lxml/etree.so , 2): 未找到符号: ___xmlStructuredErrorContext
  引用自:/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/lxml-3.0.1-py2.7-macosx-10.6-intel.egg/lxml/etree.so
  预期在:平面命名空间
 在/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/lxml-3.0.1-py2.7-macosx-10.6-intel.egg/lxml/etree.so
python python-2.7 lxml
5个回答
8
投票

我也有同样的问题。如果你是用pip安装的,如下:

pip install lxml

相反,请尝试使用

STATIC_DEPS=true pip install lxml

这解决了我的问题。

这个网站

找到

6
投票

如果您已经安装了

libxml2
,那么它可能只是没有选择正确的版本(默认情况下,OS X 会安装一个版本)。特别是,假设您已将
libxml2
安装到
/usr/local
。您可以检查哪些共享库
etree.so
参考:

$> otool -L /Library/Python/2.7/site-packages/lxml-3.2.1-py2.7-macosx-10.7-intel.egg/lxml/etree.so 
/Library/Python/2.7/site-packages/lxml-3.2.1-py2.7-macosx-10.7-intel.egg/lxml/etree.so:
    /usr/lib/libxslt.1.dylib (compatibility version 3.0.0, current version 3.24.0)
    /usr/local/lib/libexslt.0.dylib (compatibility version 9.0.0, current version 9.17.0)
    /usr/lib/libxml2.2.dylib (compatibility version 10.0.0, current version 10.3.0)
    /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)

在系统安装的版本中检查该符号:

$> nm /usr/lib/libxml2.2.dylib | grep ___xmlStructuredErrorContext

对我来说,它不存在于系统安装的库中。然而,在我安装的版本中:

$> nm /usr/local/lib/libxml2.2.dylib | grep ___xmlStructuredErrorContext
000000000007dec0 T ___xmlStructuredErrorContext

要解决此问题,请确保您的安装路径首先出现在

DYLD_LIBRARY_PATH
:

$> export DYLD_LIBRARY_PATH=/usr/local/lib
$> python
>>> from lxml import etree
# Success!

2
投票

如果您在 2022 年在 M1 Mac 上遇到此问题,请尝试以下操作:

pip3 uninstall lxml

pip3 install lxml

这会将 lxml 升级到最新版本(在我的例子中为 4.7.1 与 4.6.3),并根据有关此问题的其他轶事证据清除可能导致问题的文件。


0
投票

2024年1月更新,通过在MacOS 13中将lxml版本从5.1.0降级到4.7.1来解决

pip uninstall lxml

pip install lxml==4.7.1


-1
投票

运行以下命令安装 lxml 包。

pip install lxml --user 

应该可以解决这个问题。我在 MAC OSX 上测试过 10.7.5,运行良好。

© www.soinside.com 2019 - 2024. All rights reserved.