gpt4 book ai didi

python - 如何将 Python 2.x 的旧 C 扩展更新到 Python 3.x

转载 作者:可可西里 更新时间:2023-11-01 09:46:54 32 4
gpt4 key购买 nike

我想使用我找到的 Python 扩展 here ,但我使用的是 Python 3.1,当我尝试编译包 (_wincon) 中包含的 C 扩展时,由于所有语法错误,它无法编译。不幸的是,它是为 2.x 版本的 Python 编写的,因此包括 PyMember_GetPyMember_Set 等方法,它们不再是 Python 的一部分。我的问题是我还没有开始学习 C,因此无法弄清楚如何修改代码以使用在 Python 3.1 中仍然有效的语法。 (还有一些宏需要修复,例如 staticforward,但我假设这些只需要更改为 static。)因此:我该怎么做解决这个问题?

(请注意,我确实研究过 Python 的各种其他 Windows 控制台界面,例如 PyWin32 中的 win32con 扩展),但没有一个像这个看起来那样符合我的需要。)

最佳答案

我不相信有任何 Elixir 可以使为某些旧版本的 Python 2 编码的 Python 扩展的 C 源代码变成为 Python 3 编码的有效 C 源代码——它需要理解 C以及 C API 是如何改变的,以及扩展在其代码的每个部分中究竟做了什么。相信我,如果我们知道有一些 Elixir 的方法可以在没有人类知识和理解的情况下基本做到这一点,我们就会包括一个“代码生成器”(比如 Python 源代码的 2to3 —— 即使这样也有很大的局限性!)这样的 C 代码翻译。

在实践中,即使 Python 3.1 本身 是一种成熟的生产就绪语言,如果您需要一些,您不应该在 Python 3.1 中迁移您的代码(或编写一个全新的应用程序)您无法移植的 Python 2.* 扩展——坚持使用 2.6,直到您需要的扩展可用(或者您已经学习了足够多的 C 来自己移植它们——或者在 Cython 中重写它们,它确实支持 Python 2。 * 3.*,我相信,程序员只需一点点小心。

关于python - 如何将 Python 2.x 的旧 C 扩展更新到 Python 3.x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1157134/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com