Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Python扩展模块中获取当前运行的Python解释器的版本?_Python_Python 2.7_Extension Modules - Fatal编程技术网

如何从Python扩展模块中获取当前运行的Python解释器的版本?

如何从Python扩展模块中获取当前运行的Python解释器的版本?,python,python-2.7,extension-modules,Python,Python 2.7,Extension Modules,这个问题是关于如何从扩展模块(即用C编写的模块)中检测用于执行扩展模块的Python解释器的版本 作为背景,在Python扩展模块中,获取编译扩展所依据的Python版本非常简单。在包含标准Python头Python.h(例如宏PY\u版本)时,您可以只使用其中一个 我的问题是,是否可以从扩展模块内部在运行时获取当前用于运行扩展的解释器的版本。例如,如果Python2.5被意外地用于运行针对Python2.7编译的扩展模块,我希望能够在运行时从扩展模块中检测到这一点。为了具体起见,我们假设扩展模

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

作为背景,在Python扩展模块中,获取编译扩展所依据的Python版本非常简单。在包含标准Python头
Python.h
(例如宏
PY\u版本
)时,您可以只使用其中一个

我的问题是,是否可以从扩展模块内部在运行时获取当前用于运行扩展的解释器的版本。例如,如果Python2.5被意外地用于运行针对Python2.7编译的扩展模块,我希望能够在运行时从扩展模块中检测到这一点。为了具体起见,我们假设扩展模块是根据Python 2.7编译的

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

"1.5 (#67, Dec 31 1997, 22:34:28) [GCC 2.7.2.2]"
第一个单词(直到第一个空格字符)是当前的Python版本;前三个字符是由一个句号分隔的主要和次要版本。返回的字符串指向静态存储;调用方不应修改其值。Python代码可以使用该值作为
sys.version


除了执行与检查
sys.version
(或者只是运行这样做的Python代码)相当的C之外,是的,它必须仅来自C,但是如果有办法保证在导入扩展时执行某些纯Python代码,这可能也行,但不太理想。我看不出问题:C代码在导入扩展时运行,并且说C代码应该能够使用整个CPythonAPI。但是马蒂恩·皮特斯给出了一个更有希望的答案,没有问题。我只是不知道API的这一部分