API と ABI のバージョニング¶
CPython は以下のマクロでバージョン番号を公開しています。これらはコードが ビルドされた バージョンに対応しており、必ずしも 実行時 に使われるバージョンではないことに注意してください。
バージョン間の API と ABI の安定性については C API の安定性 を参照してください。
-
PY_MAJOR_VERSION¶
3.4.1a2
の3
。
-
PY_MINOR_VERSION¶
3.4.1a2
の4
。
-
PY_MICRO_VERSION¶
3.4.1a2
の1
。
-
PY_RELEASE_LEVEL¶
3.4.1a2
のa
。アルファでは0xA
、ベータでは0xB
、リリース候補では0xC
、最終版では0xF
となります。
-
PY_RELEASE_SERIAL¶
3.4.1a2
の2
。最終リリースでは 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¶
- 次に属します: Stable ABI (バージョン 3.11 より).
PY_VERSION_HEX
マクロと同じ書式で、単一の定数整数でエンコードされた Python の実行時のバージョン番号です。これは実行時に使用される Python のバージョンを含んでいます。バージョン 3.11 で追加.
これらのマクロは Include/patchlevel.h で定義されています。