Следующие переменные модуля sys
предоставляют информацию о версии интерпретатора Python из кода.
sys.copyright
,sys.version
,sys.api_version
,sys.version_info
,sys.implementation
,sys.hexversion
,sys.winver
.sys.copyright
:Переменная sys.copyright
возвращает строку, содержащая авторские права, относящиеся к интерпретатору Python.
sys.version
:Переменная sys.version
возвращает строку, содержащую номер версии интерпретатора Python плюс дополнительную информацию о номере сборки и используемом компиляторе.
Данная строка отображается при запуске интерактивного переводчика. Не извлекайте информацию из нее, лучше используйте sys.version_info
и функции, предоставляемые модулем platform
.
sys.api_version
:Переменная sys.api_version
возвращает версию API языка C
для этого интерпретатора Python. Программисты могут использовать ее при отладке конфликтов версий между Python и модулями расширения.
sys.version_info
:Переменная sys.api_version
возвращает кортеж, содержащий пять компонентов номера версии:
Все значения, кроме releaselevel
, являются целыми числами.
Значения releaselevel
:
Компоненты также могут быть доступны по имени, sys.version_info[0]
что эквивалентно sys.version_info.major
и так далее.
sys.implementation
:Атрибут sys.implementation
представляет собой объект, содержащий информацию о реализации текущего запущенного интерпретатора Python. Следующие атрибуты должны существовать во всех реализациях Python.
name
- это идентификатор реализации, например "cpython"
. Фактическая строка определяется реализацией Python, но она гарантированно будет строчной.
version
- это именованный кортеж, в том же формате, что и sys.version_info
. Он представляет собой версию реализации Python. Значение version
отличается от конкретной версии языка Python, которой соответствует текущий работающий интерпретатор. Например, для PyPy 1.8 sys.implementation.version
может быть sys.version_info (1, 8, 0, 'final', 0)
, тогда как sys.version_info
будет sys.version_info (2, 7, 2, 'final', 0)
. Для CPython они имеют одинаковое значение, так как это эталонная реализация.
hexversion
- это версия реализации в шестнадцатеричном формате, например sys.hexversion
.
cache_tag
- это тег, используемый механизмом импорта в именах файлов кэшируемых модулей. По соглашению, это будет составная часть имени и версии реализации, например, "cpython-38". Хотя реализация Python может использовать другое значение, если это уместно. Если для cache_tag
установлено значение None
, это означает, что кэширование модуля должно быть отключено.
Атрибут sys.implementation
может содержать дополнительные атрибуты, специфичные для реализации Python. Эти нестандартные атрибуты должны начинаться с подчеркивания и здесь не описаны. Независимо от содержимого sys.implementation
не изменится ни во время выполнения интерпретатора, ни между версиями реализации. Однако, может измениться между версиями языка Python.
sys.hexversion
:Значение sys.hexversion
содержит номер версии, закодированный как одно целое число. Оно гарантированно увеличивается с каждой версией, включая надлежащую поддержку выпусков. Например, чтобы проверить, что интерпретатор Python имеет версию не ниже 3.5.2, используйте:
if sys.hexversion >= 0x030502F0: # используйте дополнительные функции ... else: # используйте альтернативную реализацию # или предупредите пользователя ...
Значение sys.hexversion
это шестнадцатеричный номер версии и представляет собой результат передачи его встроенной функции hex()
. Для более удобного получения той же самой информации может использоваться именованный кортеж, возвращаемый sys.version_info
.
sys.winver
:Номер версии, используемый для формирования ключей реестра на платформах Windows. Значение хранится как строковый ресурс 1000 в DLL-библиотеке Python. Обычно это первые три символа, возвращаемые sys.version
. Значение sys.winver
представлен в модуле sys
в ознакомительных целях, изменение этого значения не влияет на ключи реестра, используемые Python.