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 版本。

Added in version 3.11.

所有提到的宏都定义在 Include/patchlevel.h [https://github.com/python/cpython/tree/3.13/Include/patchlevel.h]。