API 和 ABI 版本控制

CPython 在以下宏中公开其版本号。请注意,这些宏对应于代码**构建时**的版本,而不一定是**运行时**使用的版本。

有关跨版本的 API 和 ABI 稳定性的讨论,请参阅 C API 稳定性

PY_MAJOR_VERSION

3.4.1a2 中的 3

PY_MINOR_VERSION

3.4.1a2 中的 4

PY_MICRO_VERSION

3.4.1a2 中的 1

PY_RELEASE_LEVEL

3.4.1a2 中的 a。这可以是 alpha 的 0xA,beta 的 0xB,候选版本的 0xC 或最终版本的 0xF

PY_RELEASE_SERIAL

3.4.1a2 中的 2。最终版本为零。

PY_VERSION_HEX

以单个整数编码的 Python 版本号。

可以通过将它视为以下方式的 32 位数字来找到底层的版本信息

字节

位(大端顺序)

含义

3.4.1a2 的值

1

1-8

PY_MAJOR_VERSION

0x03

2

9-16

PY_MINOR_VERSION

0x04

3

17-24

PY_MICRO_VERSION

0x01

4

25-28

PY_RELEASE_LEVEL

0xA

29-32

PY_RELEASE_SERIAL

0x2

因此,3.4.1a2 的十六进制版本为 0x030401a23.10.0 的十六进制版本为 0x030a00f0

使用此值进行数值比较,例如 #if PY_VERSION_HEX >= ...

此版本也可以通过符号 Py_Version 获得。

const unsigned long Py_Version
自 3.11 版本以来,属于 稳定 ABI 的一部分。

以单个常量整数编码的 Python 运行时版本号,格式与 PY_VERSION_HEX 宏相同。它包含运行时使用的 Python 版本。

在 3.11 版本中添加。

所有给定的宏都在 Include/patchlevel.h 中定义。