Проверка версии Python 3: от консоли до программного кода

Раздел: Python -> Установка и настройка Python

При разработке на Python важно знать, какая версия интерпретатора используется. Это влияет на доступные возможности и совместимость кода. Ниже представлены различные методы проверки версии Python 3.

Способы проверки версии Python 3

Наиболее эффективный способ программной проверки версии - использование модуля sys и атрибута version_info. Он возвращает именованный кортеж с полями major, minor, micro, releaselevel и serial. Это позволяет гибко сравнивать версии без разбора строк.

import sys

if sys.version_info.major == 3 and sys.version_info.minor >= 8:
    print("Версия 3.8 или выше")
else:
    print("Требуется Python 3.8+")

Python 3 проверка (проверка версии python 3)

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

Возможные проблемы: если модуль sys не импортирован, возникнет ошибка NameError. Также при сравнении следует учитывать, что version_info может изменить порядок полей в будущих версиях (но на практике это маловероятно).

Как узнать версию Python из командной строки?

Самая простая команда - python --version или python3 --version. В зависимости от системы одна из команд может указывать на Python 2.

python --version
python3 --version

Python 32 бит (python 32-битная версия)

Результат выводится в стандартный поток ошибок (stderr) у некоторых версий, но это не влияет на использование.

Типичная ошибка: команда не найдена - значит, Python не добавлен в переменную PATH. Решение: переустановить Python с опцией добавления в PATH или указать полный путь к интерпретатору. Если вывод показывает версию 2.x, а нужна 3.x, следует использовать python3.

Как получить полную строку с информацией о версии?

Атрибут sys.version содержит подробную строку: номер версии, дату компиляции, информацию о компиляторе. Полезно для отладки.

import sys
print(sys.version)

установка python скачать (скачивание и установка python)

Вывод будет похож на 3.10.4 (main, Mar 23 2022, 23:05:40) [GCC 11.2.0].

Проблема: строку сложно разобрать для сравнения версий. Для автоматической проверки лучше использовать version_info.

Как получить версию в удобном для сравнения формате?

Функция platform.python_version() возвращает строку вида '3.10.4' - только три компонента.

import platform
print(platform.python_version())

как проверить версию python (как проверить версию python)

Эту строку можно сравнить с требуемой, например, через split и преобразование в числа.

При прямом строковом сравнении '3.10' > '3.9' даёт True, но '3.10' > '3.9.9' тоже True, что корректно для большинства случаев. Однако если нужно точное сравнение с учётом micro, лучше преобразовать в кортеж целых чисел.

Как проверить, что версия не ниже требуемой?

Для строгого сравнения можно использовать модуль packaging.version (требуется установка packaging).

from packaging.version import Version

required = Version('3.8')
current = Version(platform.python_version())
if current >= required:
    print("Версия подходит")
else:
    print("Обновите Python")

как проверить есть ли python (как проверить, установлен ли python)

Этот способ корректно обрабатывает версии с альфа- и бета-маркерами.

Если пакет packaging не установлен, возникнет ImportError. В базовой поставке Python начиная с 3.8 есть модуль importlib.metadata, но для сравнения версий удобнее использовать version_info без внешних зависимостей.

Как вывести версию внутри скрипта для диагностики?

Можно однострочником импортировать sys и напечатать version.

python -c "import sys; print(sys.version)"

Это удобно в скриптах автоматизации (bash, Makefile).

В некоторых окружениях (например, в контейнерах) может отсутствовать команда python - нужно использовать python3.

Как выполнить внешнюю команду из Python для проверки?

Иногда требуется запустить дочерний процесс, чтобы получить версию. Используется модуль subprocess.

import subprocess
result = subprocess.run(['python3', '--version'], capture_output=True, text=True)
print(result.stdout.strip())

Этот метод полезен, когда нужно проверить версию другого интерпретатора (например, в виртуальном окружении).

Ошибка: если python3 не найден, будет выброшено исключение FileNotFoundError. Нужно обрабатывать через try/except.

Как узнать версию в интерактивной оболочке?

В самом интерпретаторе можно выполнить:

import sys
sys.version

Или просто набрать help() и ввести sys.version. В Jupyter Notebook - %python --version (магическая команда).

Если используется виртуальное окружение, версия будет соответствовать версии интерпретатора, из которого создано окружение.

Расширенные примеры проверки версии Python 3 с пояснениями и результатами.

Пример 1. Скрипт с проверкой минимальной версии и завершением

Пример
import sys
import os

required = (3, 8)
if sys.version_info < required:
    print(f"Ошибка: требуется Python {'.'.join(map(str, required))}, текущая версия {sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}")
    sys.exit(1)
else:
    print(f"Версия {sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro} подходит")
При запуске на Python 3.7: 
Ошибка: требуется Python 3.8, текущая версия 3.7.9
(код завершения 1)

Этот подход часто используется в точках входа приложений для гарантии совместимости.

Пример 2. Сравнение версий с помощью packaging.version

Пример
from packaging.version import Version
import platform

current = Version(platform.python_version())
required = Version('3.9.0')
if current >= required:
    print(f"Текущая версия {current} >= {required}")
else:
    print(f"Требуется обновление до {required}")
Для Python 3.10.4:
Текущая версия 3.10.4 >= 3.9.0

Пример 3. Получение версии из переменной окружения

Пример
import os
import sys

# Можно установить PYTHON_VERSION вручную или в CI
os.environ['PYTHON_VERSION'] = sys.version
print("Версия из окружения:", os.environ.get('PYTHON_VERSION', 'не задана'))
Версия из окружения: 3.10.4 (main, ...)

Используется в Docker или CI для явной передачи версии.

Пример 4. Проверка версии в дочерних процессах (multiprocessing)

Пример
import multiprocessing as mp
import sys

def check_version():
    return sys.version_info

if __name__ == '__main__':
    with mp.Pool(1) as pool:
        result = pool.apply(check_version)
        print("Версия в дочернем процессе:", result)
Версия в дочернем процессе: sys.version_info(major=3, minor=10, micro=4, releaselevel='final', serial=0)

Пример 5. Использование sysconfig для определения версии интерпретатора

Пример
import sysconfig

version = sysconfig.get_config_var('PYTHON_VERSION')
if version:
    print("Версия из конфигурации:", version)
else:
    print("Не удалось получить версию из sysconfig")
Версия из конфигурации: 3.10

Этот метод может не давать micro-версию, но подходит для быстрой проверки.

Пример 6. Получение версии из заголовка бинарного файла

Пример
import subprocess
import sys

# Определяем путь к интерпретатору
executable = sys.executable
result = subprocess.run([executable, '--version'], capture_output=True, text=True)
print("Версия через sys.executable:", result.stdout.strip())
Версия через sys.executable: Python 3.10.4

Этот способ гарантирует, что версия берётся от текущего интерпретатора, даже если в PATH есть другой.

Проверка версии Python 3 - comments

En
Python 3 проверка (python)