이 질문은 확장 모듈 (즉, C로 작성된 모듈) 내에서 확장 모듈을 실행하는 데 사용되는 Python 해석기의 버전을 감지하는 방법에 관한 것입니다.Python 확장 모듈에서 현재 실행중인 Python 인터프리터의 버전을 얻으려면 어떻게해야합니까?
배경 지식으로 파이썬 확장 모듈 내부에서 확장이 컴파일 된 파이썬 버전을 얻는 것은 간단합니다. 표준 파이썬 헤더 Python.h
(예 : 매크로 PY_VERSION
)을 포함 할 때 포함되는 macros defined in patchlevel.h
중 하나를 사용할 수 있습니다.
내 질문은 확장 모듈 내에서 확장 프로그램을 실행하는 데 현재 사용중인 인터프리터 버전 을 런타임에 가져올 수 있는지 여부입니다. 예를 들어, Python 2.5가 실수로 Python 2.7에 대해 컴파일 된 확장 모듈을 실행하는 데 사용 되었다면 확장 모듈 내에서 런타임에이를 감지 할 수 있기를 바랍니다. 구체성을 위해 확장 모듈이 Python 2.7에 대해 컴파일되었다고 가정 해 봅시다.
'sys.version'을 검사하는 것과 동등한 조치 (또는 그렇게하는 Python 코드를 실행하는 것)가 필요합니까? – delnan
그렇습니다. C에서 온 것입니다. 그러나 특정 순수 Python 코드가 확장을 가져올 때마다 실행되도록 보장 할 수있는 방법이 있으면 작동 할 수도 있지만 덜 바람직합니다. – cjerdonek
문제가 보이지 않습니다. 확장을 가져올 때 C 코드가 실행되고 C 코드가 전체 CPython API를 사용할 수 있어야합니다. 그러나 Martijn Pieters는 어쨌든 더 유망한 대답을했습니다. – delnan