API と ABI のバージョニング

CPython は以下のマクロでバージョン番号を公開しています。これらはコードが ビルドされた バージョンに対応しており、必ずしも 実行時 に使われるバージョンではないことに注意してください。

バージョン間の API と ABI の安定性については C API の安定性 を参照してください。

PY_MAJOR_VERSION

3.4.1a23

PY_MINOR_VERSION

3.4.1a24

PY_MICRO_VERSION

3.4.1a21

PY_RELEASE_LEVEL

3.4.1a2a 。アルファでは 0xA 、ベータでは 0xB 、リリース候補では 0xC 、最終版では 0xF となります。

PY_RELEASE_SERIAL

3.4.1a22 。最終リリースでは 0 になります。

PY_VERSION_HEX

Python のバージョン番号を単一の整数に符号化したものです。

下記のように32ビットの値として扱うことで、バージョン情報を得ることができます:

bytes

ビット (ビッグエンディアンオーダ)

意味

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 は16進数で 0x030401a2 であり、 3.10.0 は16進数で 0x030a00f0 です。

これを数値比較に使用します。例えば、 #if PY_VERSION_HEX >= ...

このバージョンはシンボル Py_Version からも入手できます。

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

PY_VERSION_HEX マクロと同じ書式で、単一の定数整数でエンコードされた Python の実行時のバージョン番号です。これは実行時に使用される Python のバージョンを含んでいます。

バージョン 3.11 で追加.

これらのマクロは Include/patchlevel.h で定義されています。