> **Источник:** https://python-all.ru/3.12/c-api/apiabiversion.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# Версионирование API и ABI

CPython предоставляет номер своей версии в следующих макросах. Обратите внимание, что они соответствуют версии, с которой код был **собран**, а не обязательно той версии, которая используется во **время выполнения**.

См. [Стабильность C API](https://python-all.ru/3.12/c-api/stable.html#stable) для обсуждения стабильности 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`. Может быть `0xA` для альфа, `0xB` для бета, `0xC` для кандидата релиза или `0xF` для финальной.

#### `PY_RELEASE_SERIAL`

`2` в `3.4.1a2`. Ноль для финальных релизов.

#### `PY_VERSION_HEX`

Номер версии Python, закодированный в одном целочисленном значении.

Основную информацию о версии можно получить, интерпретируя его как 32-битное число следующим образом:

| Байты | Биты (порядок big endian) | Значение | Значение для `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` – это hexversion `0x030401a2`, а `3.10.0` – это hexversion `0x030a00f0`.

Используется для численных сравнений, например `#if PY_VERSION_HEX >= ...`.

Эта версия также доступна через символ [`Py_Version`](https://python-all.ru/3.12/c-api/apiabiversion.html#c.Py_Version).

#### `const unsigned long Py_Version`

*Часть [Stable ABI](https://python-all.ru/3.12/c-api/stable.html#stable) начиная с версии 3.11.*

Номер версии среды выполнения Python, закодированный в одной целочисленной константе, с тем же форматом, что и макрос [`PY_VERSION_HEX`](https://python-all.ru/3.12/c-api/apiabiversion.html#c.PY_VERSION_HEX). Он содержит версию Python, используемую во время выполнения.

Добавлено в версии 3.12.

Все приведенные макросы определены в файле [Include/patchlevel.h](https://python-all.ru/src/3.12/Include/patchlevel.h).
