【问题标题】:Python 3.4 : How to do xml validationPython 3.4:如何进行 xml 验证
【发布时间】: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


【解决方案1】:

只是为了排除故障,您是否以管理员身份运行pip install lxml?并且是否安装了 libxml2 和 libxslt 依赖项?

这是来自安装页面: http://lxml.de/installation.html

在 Linux(和大多数其他运行良好的操作系统)上,只要正确安装了 libxml2 和 libxslt,pip 将设法构建源代码分发,包括开发包,即头文件等。请参阅上面的要求部分和使用系统包管理工具查找 libxml2-dev 或 libxslt-devel 等包。如果构建失败,请确保已安装它们。 或者,设置 STATIC_DEPS=true 将自动下载并构建两个库的最新版本,例如STATIC_DEPS=true pip install lxml.

【讨论】:

    猜你喜欢
    • 2021-12-30
    • 2015-03-05
    • 1970-01-01
    • 2015-08-08
    • 2021-12-04
    • 2018-04-10
    • 1970-01-01
    • 2021-08-01
    • 2012-04-13
    相关资源
    最近更新 更多