为Python3安装libxml2绑定
问题
我正在尝试为 Python 3.2 构建 libxml
(版本 libxml2-2.7.8
)的绑定。当我运行以下命令时:
./configure --with-python=/usr/bin/python3.2
虽然 libxml2-2.7.8
的编译成功了,但 libxml2-2.7.8
的 Python 绑定却失败了!
尝试的解决办法
- 我把
setup.py
和generator.py
移植过来了(使用了2to3
工具,并对generator.py
做了一些基本的修改) - 我对
libxml.c
和types.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。