为Python3安装libxml2绑定

4 投票
1 回答
4545 浏览
提问于 2025-04-16 20:48

问题

我正在尝试为 Python 3.2 构建 libxml(版本 libxml2-2.7.8)的绑定。当我运行以下命令时:

./configure --with-python=/usr/bin/python3.2

虽然 libxml2-2.7.8 的编译成功了,但 libxml2-2.7.8 的 Python 绑定却失败了!

尝试的解决办法

  1. 我把 setup.pygenerator.py 移植过来了(使用了 2to3 工具,并对 generator.py 做了一些基本的修改)
  2. 我对 libxml.ctypes.c 做了如下修改:
    • 把 PyInt* 替换成 PyLong*
    • 把 PyString* 替换成 PyBytes*

当前情况

不幸的是,这些修改还是不够。我运行了 python3.2 setup.py build,结果出现了以下错误:

types.c:594:17: error: ‘PyInstanceObject’ undeclared (first use in this function)

我找不到 Python3 对应的 PyInstanceObject

有没有人成功为 Python 3 编译 libxml2 的绑定?

我是不是漏掉了什么???有没有人能帮帮我? :(

1 个回答

3

PyInstanceObject 是一种支持旧式类型的东西,这种类型在 Python 3 中已经被淘汰了,而且从 Python 2.2 开始就不再推荐使用了。这里的关键是先把绑定更新为使用新式类,然后再迁移到 Python 3。

(或者可以使用 lxml,它把 libxml2 封装成了更符合 Python 风格的 XML 类。)

我不太确定具体的替代方案是什么,因为我从来没有在 C 语言中使用过旧式类,但我觉得它可能就是一个 PyObject。

撰写回答