Python

API와 ABI 버전 붙이기

빌드 시간 버전 상수

CPython은 다음 매크로에서 버전 번호를 노출합니다. 이는 구축 된 버전 코드에 해당한다는 점에 유의하십시오. 런타임 에 사용된 버전은 Py_Version 을 참조하십시오.

버전별 API 및 ABI 안정성에 대한 논의는 :ref:`stable`을 참조하십시오.

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_LEVEL_ALPHA (0xA), PY_RELEASE_LEVEL_BETA (0xB), PY_RELEASE_LEVEL_GAMMA (0xC), 및 PY_RELEASE_LEVEL_FINAL (0xF).

PY_RELEASE_SERIAL

3.4.1a22. 최종 배포는 0.

PY_VERSION_HEX

하나의 정수로 인코딩된 파이썬 버전 번호입니다. 인코딩 세부 정보는 :c:func:`Py_PACK_FULL_VERSION`을 참조하십시오.

숫자 비교에 사용합니다. 예를 들어, #if PY_VERSION_HEX >= ... 와 같습니다.

PY_VERSION

The Python version as a string, for example, "3.4.1a2".

이 매크로는 :source:`Include/patchlevel.h`에 정의되어 있습니다.

런타임 버전

const unsigned long Py_Version
상의 안정 ABI 버전 3.11 이후로.

하나의 상수 정수로 인코딩된 파이썬 런타임 버전 번호입니다. 인코딩 세부 정보는 :c:func:`Py_PACK_FULL_VERSION`을 참조하십시오. 여기에 런타임에 사용된 파이썬 버전이 포함되어 있습니다.

숫자 비교에 사용합니다. 예를 들어, if (Py_Version >= ...) 와 같습니다.

Added in version 3.11.

비트 패킹 매크로

uint32_t Py_PACK_FULL_VERSION(int major, int minor, int micro, int release_level, int release_serial)
상의 안정 ABI 버전 3.14 이후로.

다음 구조로 단일 32비트 정수로 인코딩된 주어진 버전을 반환합니다:

인자

비트 수

비트 마스크

비트 시프트

예시 값

3.4.1a2

3.10.0

major

8

0xFF000000

24

0x03

0x03

minor

8

0x00FF0000

16

0x04

0x0A

micro

8

0x0000FF00

8

0x01

0x00

release_level

4

0x000000F0

4

0xA

0xF

release_serial

4

0x0000000F

0

0x2

0x0

예:

버전

Py_PACK_FULL_VERSION 인자

인코딩된 버전

3.4.1a2

(3, 4, 1, 0xA, 2)

0x030401a2

3.10.0

(3, 10, 0, 0xF, 0)

0x030a00f0

인자에서 범위를 벗어나는 비트는 무시됩니다. 즉, 매크로는 다음과 같이 정의될 수 있습니다:

#ifndef Py_PACK_FULL_VERSION
#define Py_PACK_FULL_VERSION(X, Y, Z, LEVEL, SERIAL) ( \
   (((X) & 0xff) << 24) |                              \
   (((Y) & 0xff) << 16) |                              \
   (((Z) & 0xff) << 8) |                               \
   (((LEVEL) & 0xf) << 4) |                            \
   (((SERIAL) & 0xf) << 0))
#endif

Py_PACK_FULL_VERSION``은 주로 ``#if 지시문을 사용하기 위한 매크로이지만, 내보내기된 함수로도 사용할 수 있습니다.

Added in version 3.14.

uint32_t Py_PACK_VERSION(int major, int minor)
상의 안정 ABI 버전 3.14 이후로.

Py_PACK_FULL_VERSION(major, minor, 0, 0, 0) 와 동등합니다. 결과는 어떤 파이썬 릴리스와도 일치하지 않지만, 숫자 비교에 유용합니다.

Added in version 3.14.