为python3安装libxml2绑定

时间:2011-07-04 16:11:09

标签: python python-3.x libxml2

问题

我正在尝试为Python 3.2构建libxmllibxml2-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如下:
    • 用PyLong *替换PyInt *
    • 用PyBytes *替换PyString *
  3. 现状

    不幸的是,它仍然不够。我跑python3.2 setup.py build并收到以下错误:

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

    我找不到与PyInstanceObject相同的Python3!

    是否有人设法为Python 3编译libxml2绑定?

    我错过了什么吗???有人可以帮忙吗? :(

1 个答案:

答案 0 :(得分:3)

PyInstanceObject是对旧样式类型的支持的一部分,它是gone in Python 3,并且自Python 2.2以来已被弃用。这里的技巧是首先更新绑定以使用新式类,然后移植到Python 3。

(或者使用lxml,它将libxml2包装在Pythonic XML类中)。

我不是百分之百确定替换是什么,我从未在C中使用旧式类,但我认为它只是一个PyObject。