API i wersjonowanie ABI

CPython (standardowa implementacja) ujawnia swój numer wersji w następujących makrach. Należy pamiętać, że odpowiadają one kodowi wersji, z którym został zbudowany, niekoniecznie wersji używanej w czasie działania.

See C API Stability for a discussion of API and ABI stability across versions.

PY_MAJOR_VERSION

3 w 3.4.1a2.

PY_MINOR_VERSION

4 w 3.4.1a2.

PY_MICRO_VERSION

1 w 3.4.1a2.

PY_RELEASE_LEVEL

a w 3.4.1a2. Może to być 0xA dla wersji alfa, 0xB dla wersji beta, 0xC dla wersji kandydującej do wydania lub 0xF dla wersji finalnej.

PY_RELEASE_SERIAL

2 w 3.4.1a2. Zero dla ostatecznych wydań.

PY_VERSION_HEX

Numer wersji Pythona zakodowany w pojedynczej liczbie całkowitej.

Podstawowe informacje wersji można znaleźć, traktując je jako 32-bitową liczbę w następujący sposób:

Bajty

Bity (kolejność big endian)

Znaczenie

Wartość dla 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

Tak więc 3.4.1a2 jest hekswersją 0x030401a2, a 3.10.0 jest hekswersją 0x030a00f0.

Służy do porównywania liczb, np. #if PY_VERSION_HEX >= ....

Ta strona wersji jest również dostępna za pośrednictwem symbolu Py_Version.

const unsigned long Py_Version
Part of the Stable ABI since version 3.11.

The Python runtime version number encoded in a single constant integer, with the same format as the PY_VERSION_HEX macro. This contains the Python version used at run time.

Nowe w wersji 3.11.

Wszystkie podane makra są zdefiniowane w Include/patchlevel.h.