API 和 ABI 版本管理
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 即十六进制版本号的 0x030401a2 而 3.10.0 即十六进制版本号的 0x030a00f0。
用于进行数值比较,例如 #if PY_VERSION_HEX >= ...。
该版本还可通过符号 Py_Version 获取。
const unsigned long Py_Version
属于稳定 ABI 自 3.11 版起.
Python 运行时版本号编码在一个整数常量中,所用格式与 PY_VERSION_HEX 宏的相同。 这包含了在运行时使用的 Python 版本。
Added in version 3.11.
所有提到的宏都定义在 Include/patchlevel.h。
