【发布时间】:2015-07-07 15:48:16
【问题描述】:
我正在尝试对 python 中的某些 XSD 进行 XML 验证。我成功使用了 lxml 包。但是当我尝试将我的代码移植到 python 3.4 时,问题就开始了。 我尝试为 3.4 版本安装 lxml。看来我的企业级 linux 不能很好地与 lxml 配合使用。
pip 安装:
pip install lxml
Collecting lxml
Downloading lxml-3.4.4.tar.gz (3.5MB)
100% |################################| 3.5MB 92kB/s
Installing collected packages: lxml
Running setup.py install for lxml
Successfully installed lxml-3.4.4
pip 安装后:
> python
Python 3.4.1 (default, Nov 12 2014, 13:34:29)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux
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: /ws/satjonna-sjc/pyats/lib/python3.4/site-packages/lxml/etree.cpython-34m.so: undefined symbol: xmlMemDisplayLast
>>>
git 安装:
git clone git://github.com/lxml/lxml.git lxml
Cloning into 'lxml'...
remote: Counting objects: 25078, done.
remote: Total 25078 (delta 0), reused 0 (delta 0), pack-reused 25078
Receiving objects: 100% (25078/25078), 21.38 MiB | 2.66 MiB/s, done.
Resolving deltas: 100% (9854/9854), done.
Checking connectivity... done.
git安装后:
> python
Python 3.4.1 (default, Nov 12 2014, 13:34:29)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux
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: cannot import name 'etree'
我发现 lxml 等效于 xml.etree.ElementTree。但主要问题是除了重写整个代码之外,我还需要为 lxml 验证方法( etree.fromstring(xmlstring, xmlparser) )找到一个 xml.etree 替代方案。 任何有助于完成这项工作的建议都会非常有帮助。
【问题讨论】:
-
对于
lxml,您是否同时拥有libxml2和libxslt?尝试:yum install libxml2-devel libxslt-devel,然后再次安装lxml
标签: python xml lxml elementtree xml-validation