Определение установленной версии интерпретатора Python
Способы определения версии Python
Основной способ узнать версию Python, установленную в системе, заключается в использовании команды терминала:
python --versionPython 3 проверка (проверка версии python 3)
или сокращённый вариант:
python -VPython 32 бит (python 32-битная версия)
Команда выводит строку вида Python 3.12.0. Если в системе одновременно присутствуют Python 2 и Python 3, может потребоваться уточнение:
python3 --version
установка python скачать (скачивание и установка python)
На платформе Windows также доступна команда py с указанием версии:
py -3.11 --versionкак проверить версию python (как проверить версию python)
Типичные ошибки:
- Если команда python не найдена, проверяется переменная PATH или используется полный путь к интерпретатору.
- На некоторых дистрибутивах Linux команда python может отсутствовать, а python3 установлена. В таком случае следует обращаться именно к python3.
- Ошибка 'python' is not recognized as an internal or external command в Windows возникает, если интерпретатор не добавлен в PATH или не установлен.
Как узнать версию Python из кода скрипта?
Самый распространённый способ внутри программы - использовать модуль sys.
import sys
print(sys.version)как проверить есть ли python (как проверить, установлен ли python)
Вывод содержит полную информацию: номер версии, дату компиляции, тип сборки.
3.12.0 (tags/v3.12.0:0fb18b0, Oct 7 2023, 13:03:39) [MSC v.1935 64 bit (AMD64)]
Проблема:
Если требуется только номер версии без дополнительных деталей, лучше использовать sys.version_info или platform.python_version().
Как получить версию Python в виде строки для сравнения?
Функция platform.python_version() из одноимённого модуля возвращает только номер версии.
import platform
print(platform.python_version())
3.12.0
Для программного сравнения удобно использовать кортеж platform.python_version_tuple():
import platform
ver = platform.python_version_tuple() # ('3', '12', '0')
if ver >= ('3', '12'):
print("Поддерживается Python 3.12 и выше")
Как убедиться, что виртуальное окружение использует нужную версию Python?
Активировав виртуальное окружение, достаточно выполнить команду проверки версии внутри него.
# Создание виртуального окружения с указанием интерпретатора
python3.11 -m venv myenv
# Активация (Linux/macOS)
source myenv/bin/activate
# Проверка версии
python --version
Python 3.11.7
В Windows активация выполняется командой myenv\Scripts\activate.
Ошибка:
Если после активации окружения версия отличается от ожидаемой, значит, виртуальное окружение было создано с другим интерпретатором. Рекомендуется пересоздать его, явно указывая путь к нужному исполняемому файлу Python.
Как посмотреть версию интерпретатора в среде разработки?
В PyCharm версия отображается в строке состояния справа внизу или в настройках проекта (Settings → Project → Python Interpreter). В VS Code версия показывается в нижнем левом углу, а также в списке интерпретаторов (Ctrl+Shift+P → Python: Select Interpreter).
Как программно сравнить версию Python с требуемой?
Атрибут sys.version_info представляет собой именованный кортеж.
import sys
ver = sys.version_info
print(f"Major: {ver.major}, Minor: {ver.minor}, Micro: {ver.micro}")
if ver >= (3, 10):
print("Код совместим с Python 3.10+")
Major: 3, Minor: 12, Micro: 0 Код совместим с Python 3.10+
Как быстро вывести версию Python без написания скрипта?
Однострочная команда с флагом -c позволяет выполнить код прямо в терминале.
python -c "import sys; print(sys.version)"
3.12.0 (tags/v3.12.0:0fb18b0, Oct 7 2023, 13:03:39) [MSC v.1935 64 bit (AMD64)]
Для получения только номера:
python -c "import platform; print(platform.python_version())"
3.12.0
Расширенные примеры проверки версии Python
Ниже приведены дополнительные сценарии и подробные примеры с пояснениями.
# Пример 1: условное выполнение кода в зависимости от версии
import sys
if sys.version_info.major == 3 and sys.version_info.minor >= 11:
# Использование match-case (доступно с Python 3.10)
match sys.platform:
case 'win32':
print("Работаем в Windows")
case 'linux':
print("Работаем в Linux")
else:
print("Требуется Python 3.11+ для использования match-case")
Требуется Python 3.11+ для использования match-case
# Пример 2: получение версии через platform модуль с разбором
import platform
version_tuple = platform.python_version_tuple() # ('3', '12', '0')
major, minor, patch = int(version_tuple[0]), int(version_tuple[1]), int(version_tuple[2])
print(f"Python {major}.{minor}.{patch}")
Python 3.12.0
# Пример 3: проверка версии интерпретатора внутри виртуального окружения
# Создадим временное окружение и выведем его версию
import subprocess
import tempfile
import os
# Создание временного каталога
with tempfile.TemporaryDirectory() as tmpdir:
venv_path = os.path.join(tmpdir, 'myenv')
# Создаём виртуальное окружение с Python 3.11 (если установлен)
subprocess.run(['python3.11', '-m', 'venv', venv_path], capture_output=True)
# Определяем путь к интерпретатору внутри окружения
if os.name == 'nt':
python_exe = os.path.join(venv_path, 'Scripts', 'python.exe')
else:
python_exe = os.path.join(venv_path, 'bin', 'python')
# Получаем версию
result = subprocess.run([python_exe, '--version'], capture_output=True, text=True)
print(result.stdout.strip())
Python 3.11.7
# Пример 4: проверка версии через переменную окружения
# В некоторых окружениях версия Python может быть указана в PYTHON_VERSION
import os
print(os.environ.get('PYTHON_VERSION', 'Не задана'))
3.12.0
# Пример 5: вывод версии в формате major.minor (без патча)
import sys
print(f"{sys.version_info.major}.{sys.version_info.minor}")
3.12
# Пример 6: проверка версий всех установленных интерпретаторов (Windows)
# Использование py -0 для отображения списка
import subprocess
result = subprocess.run(['py', '-0'], capture_output=True, text=True, shell=True)
print(result.stdout)
-3.12-64 * -3.11-64 -3.10-64
# Пример 7: получение детальной информации через sys.version_info
import sys
info = sys.version_info
print(f"major: {info.major}, minor: {info.minor}, micro: {info.micro}")
print(f"releaselevel: {info.releaselevel}, serial: {info.serial}")
major: 3, minor: 12, micro: 0 releaselevel: final, serial: 0
# Пример 8: сравнение версий с помощью packaging.version (если установлена библиотека)
# pip install packaging
from packaging.version import Version
v1 = Version("3.10.0")
v2 = Version("3.11.5")
if v1 <= v2:
print(f"{v1} меньше или равно {v2}")
3.10.0 меньше или равно 3.11.5