3

我很想为 Python 3.2 编译Yenc。我注意到 gcc 抱怨了一个未声明的函数,所以我根据文档PyString_Type将其替换为替换。PyBytes_Type

然而,gcc 也抱怨了一个名为PyFile_Type. 我google了一下,发现:

Python 3.x replaces the PyFile_Type extension type 
with an abstract interface and specific implementation types. 
Unfortunately it doesn't make any of this directly available 
with a C level api.

资源

我绝不是 C 程序员,这让我无法解决这个问题。我应该怎么做才能解决这个问题?

编辑:编译的输出_yenc.c

谢谢!

4

2 回答 2

2

简而言之,PyFile_Type 已被 Python 3 中根本不相似的东西所取代,您必须自己修改代码或等待维护者这样做。如果您不是 C 程序员,则可能必须是后者。 文档指出,Python 3 现在不是包装 FILE*,而是包装低级 I/O,在这种情况下是文件描述符和 read()/write()。

于 2011-11-19T18:33:14.513 回答
0

您可以尝试使用 PyFileIO_Type,但是您必须先声明它。(原文位于 Python 源代码中的 _iomodule.h 中):

extern PyTypeObject PyFileIO_Type;
于 2022-02-21T14:10:54.050 回答