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。这可以是 0xA 用于 alpha,0xB 用于 beta,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 的十六进制版本为 0x030401a2,而 3.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 中定义。