3

这个问题是关于如何从扩展模块(即用 C 编写的)中检测用于执行扩展模块的 Python 解释器的版本。

作为背景,在 Python 扩展模块中很容易获得编译扩展所针对的 Python 版本。在包含标准 Python 标头(例如宏)时,您可以只使用其中定义的宏之一。patchlevel.hPython.hPY_VERSION

我的问题是是否有可能从扩展模块中获取运行时当前用于运行扩展的解释器版本。例如,如果意外使用 Python 2.5 运行针对 Python 2.7 编译的扩展模块,我希望能够在运行时从扩展模块中检测到这一点。具体而言,假设扩展模块是针对 Python 2.7 编译的。

4

2 回答 2

3

使用Py_GetVersion()API

返回此 Python 解释器的版本。这是一个看起来像的字符串

"1.5 (#67, Dec 31 1997, 22:34:28) [GCC 2.7.2.2]"

第一个单词(直到第一个空格字符)是当前的 Python 版本;前三个字符是用句点分隔的主要版本和次要版本。返回的字符串指向静态存储;调用者不应修改其值。该值可用于 Python 代码作为sys.version.

于 2013-11-26T17:23:51.700 回答
2

导入sys. 检查hexversion

于 2013-11-26T17:22:19.850 回答