在 lxml 中使用 etree 时出错
Posted
技术标签:
【中文标题】在 lxml 中使用 etree 时出错【英文标题】:Error using etree in lxml 【发布时间】:2013-04-24 03:31:03 【问题描述】:我想在 python 中使用 xpath。我试过了
import xml.etree.ElementTree as ET
由于这个库的使用有限,我在谷歌上进行了长时间的搜索后不得不使用 lxml。我在安装过程中遇到了几个问题,最后我安装了 lxml 但是当我使用时
from lxml import etree
它会抛出如下错误。你能告诉我解决这个问题的方法吗!!!
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
from lxml import etree
ImportError: DLL load failed: %1 is not a valid Win32 application.
谁能告诉我问题是什么? 感谢您的帮助!
【问题讨论】:
似乎您的 lxml 库已损坏。你试过重新安装吗? @BasicWolf 我确实重新安装了几次 lxml..我下载了 .exe 文件并运行了它..它完成了安装但仍然抛出错误!! @BasicWolf 是不是32位和64位系统的问题??因为我读了一个答案,它与 64 位计算机存在一些兼容性问题......该错误是否仍然存在或是否有任何更改日志?谢谢 【参考方案1】:我知道这样说已经晚了...但总有一天可能会帮助某人..
我在这里使用下面的代码来解决完全相同的问题
python -m pip uninstall lxml
python -m pip install lxml==3.6.0
【讨论】:
【参考方案2】:我通过在此处下载 64 位版本的 lxml 解决了这个问题:
https://pypi.python.org/pypi/lxml/3.4.1
lxml-3.4.1.win-amd64-py2.7.exe
它是唯一一个可以解决 win32 错误的方法。在执行此操作之前,您可能需要销毁旧版本的 lxml。
【讨论】:
这是我的问题。我有 python 32bit 但安装了 amd64 lxml。所以只是提醒大家:Windows 二进制 lxml 安装程序不检查匹配的 32/64 位。【参考方案3】:既然你提到你必须与 lxml 斗争才能安装它,很难说这个错误可能在那个过程中出现的地方。
您是将 lxml 安装到 Python 的默认安装还是其他位置?如果您要安装到默认安装,https://pypi.python.org/pypi/lxml/3.2.0 中的 .exe 选项之一可能是您最好的选择。在某些情况下,我也不得不与 lxml 作斗争,但那些 .exe 选项是我找到的最简单的方法。
如果您尝试将 lxml 安装到其他 Python 安装中,我建议您使用 .egg 文件和安装工具。可悲的是,我能找到的最新的 lxml .egg 文件是 2.3 的,但你可以在这里找到它们 https://botbot.me/freenode/kivy/
【讨论】:
【参考方案4】:我遇到了同样的问题。本质上,我的操作系统是 64 位的,而我的 python 也是 64 位的。但是我安装的工具和站点包都是 32 位的,除了 64 位的 Ixml。所以,我从下面的链接安装了 Ixml 32 位版本,它对我来说很好。
https://pypi.python.org/pypi/lxml/
我相信系统正在寻找 Ixml 的 32 位实现,但它找到了 64 位。我希望这能解决问题。
【讨论】:
【参考方案5】:我遇到了同样的问题。 Win32 部分起初令人困惑,因为我运行的是 64 位系统。解决方案,可能是因为实际的python版本使用了32位组件,只是卸载旧版本的lxml并安装32位版本,这里: https://pypi.python.org/pypi/lxml/3.4.1#downloads
【讨论】:
【参考方案6】:只是添加这个以防遇到类似情况的人受益。虽然我的 Python 和 Scrapy 所需的库是 32 位安装的,但我仍然遇到了这个问题。在我将 Python 升级到下一个版本后,问题自动得到解决。
【讨论】:
以上是关于在 lxml 中使用 etree 时出错的主要内容,如果未能解决你的问题,请参考以下文章
python 3.6 lxml标准库lxml的安装及etree的使用注意
通过 pip 安装 lxml 时出错:需要 Microsoft Visual C++ 14.0
Python Xpath:lxml.etree.XPathEvalError:无效谓词