Supporting Cyclic Garbage Collection | Installing Python Modules | Report a Bug | index | modules | Python | 3.11.16 Documentation | Python/C API Reference Manual
CPython exposes its version number in the following macros. Note that these correspond to the version code is built with, not necessarily the version used at run time.
See
for a discussion of API and ABI stability across versions.
PY_MAJOR_VERSION
The 3 in 3.4.1a2.
PY_MINOR_VERSION
The 4 in 3.4.1a2.
PY_MICRO_VERSION
The 1 in 3.4.1a2.
PY_RELEASE_LEVEL
The a in 3.4.1a2. This can be 0xA for alpha, 0xB for beta, 0xC for release candidate or 0xF for final.
PY_RELEASE_SERIAL
The 2 in 3.4.1a2. Zero for final releases.
PY_VERSION_HEX
The Python version number encoded in a single integer.
The underlying version information can be found by treating it as a 32 bit number in the following manner:
Bytes
Bits (big endian order)
Meaning
Value for 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
Thus 3.4.1a2 is hexversion 0x030401a2 and 3.10.0 is hexversion 0x030a00f0.
Use this for numeric comparisons, e.g. #ifPY_VERSION_HEX>=....
This version is also available via the symbol
.
constunsignedlongPy_Version
Part of the
since version 3.11.The Python runtime version number encoded in a single constant integer, with the same format as the
macro. This contains the Python version used at run time.
New in version 3.11.
All the given macros are defined in
.