API 和 ABI 版本管理

CPython 在下列宏中暴露其版本号。 请注意这对应于 编译 用版本代码,而不是 运行时 使用的版本。

请参阅 C API 的稳定性 查看跨版本的 API 和 ABI 稳定情。

PY_MAJOR_VERSION

3 (3.4.1a2 中的第一段)。

PY_MINOR_VERSION

4 (3.4.1a2 中的第二段)。

PY_MICRO_VERSION

1 (3.4.1a2 中第三段的数字)。

PY_RELEASE_LEVEL

a (3.4.1a2 中第3段的字母)。 可能为 0xA 即 alpha, 0xB 即 beta, 0xC 即 release candidate 或 0xF 即 final。

PY_RELEASE_SERIAL

2 (3.4.1a2 中的末尾数字)。 零代表最终发布版。

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
属于 稳定 ABI 自 3.11 版起.

Python 运行时版本号编码在一个整数常量中,所用格式与 PY_VERSION_HEX 宏的相同。 这包含了在运行时使用的 Python 版本。

在 3.11 版本加入.

所有提到的宏都定义在 Include/patchlevel.h