Как проверить версию Python в скриптах

  1. sys.version способ проверки версии Python
  2. sys.version_info способ проверки версии Python
  3. Метод platform.python_version() для проверки версии на Python
  4. six модульный метод проверки версии Python

В различных обстоятельствах нам необходимо знать версию Python, а точнее - версию интерпретатора Python, выполняющего файл скрипта Python.

sys.version способ проверки версии Python

Информация об этой версии может быть получена из sys.version в модуле sys.

На Python 2.x

>>> import sys
>>> sys.version
'2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)]'

или на Python 3.x

>>> import sys
>>> sys.version
'3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)]'

sys.version_info способ проверки версии Python

sys.version возвращает строку, содержащую информацию о читаемой человеком версии текущего интерпретатора Python. Но такая информация как major release number и micro release number требует дополнительной обработки для дальнейшего использования в кодах.

sys.version_info легко решает эту проблему, возвращая информацию о версии в виде именованного кортежа. Возвращается информация о версии,

Данные Описание
major Основной номер выпуска
micro Номер патча
minor Номер версии
releaselevel alfa, beta, candidate или release
serial Серийный номер выпуска
>>> import sys
>>> sys.version_info
sys.version_info(major=2, minor=7, micro=10, releaselevel='final', serial=0)

Вы можете сравнить текущую версию со справочной просто используя операторы >, >=, ==, <= или <.

>>> import sys
>>> sys.version_info >= (2, 7)
True
>>> sys.version_info >= (2, 7, 11)
False

Мы могли бы добавить в скрипты assert, чтобы убедиться, что скрипт работает с требованием минимальной версии на Python.

import sys
assert sys.version_info >= (3, 7)

Это вызовет AssertionError, если интерпретатор не соответствует требованию версии.

Traceback (most recent call last):
  File "C:\test\test.py", line 4, in <module>
    assert sys.version_info >= (3, 7)
AssertionError

Метод platform.python_version() для проверки версии на Python

python_version() в модуле platform возвращает версию Python в виде строки major.minor.patchlevel.

>>> from platform import python_version
>>> python_version()
'3.7.0'

Или аналогично sys.version_info, platform также имеет метод возврата Python версии в виде кортежа (major, minor, patchlevel) из строк - python_version_tuple().

>>> import platform
>>> platform.python_version_tuple()
('3', '7', '0')

six модульный метод проверки версии Python

Если вам нужно только проверить, является ли версия Python 2.x или Python 3.x, вы можете использовать six модуль для выполнения этой работы.

import six
if six.PY2:
    print "Python 2.x"
if six.PY3:
    print("Python 3.x")
comments powered by Disqus