Определение версии Python во время выполнения программы
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Чтобы определить версию Python во время выполнения кода, вы можете воспользоваться модулем sys
и его атрибутом version_info
.
import sys
version = "{}.{}".format(sys.version_info.major, sys.version_info.minor)
print("Работает версия Python", version)
Код выше поможет вам определить основную и подверсию Python, на которых запущен ваш скрипт.
Управление потоком для специфических версий Python
Порой необходимо написать код, который будет отличаться в зависимости от версии Python. В таких случаях управление потоком поможет обеспечить корректное выполнение программы при использовании различных версий:
import sys
if sys.version_info.major == 3:
print("Этот блок для Python 3")
elif sys.version_info.major == 2:
print("Python 2? Покажется, вы затерялись во времени!")
Данный фрагмент кода проверяет, используется ли Python 3.x или Python 2.x, и выполняет соответствующий блок кода.
Получение полной информации о версии с помощью sys.version
Если нужно получить полную строку версии, включающую также данные о компиляторе и сборке, можно использовать атрибут sys.version
:
import sys
print(sys.version)
Альтернативный способ определения версии: модуль platform
Модуль platform
– альтернативный вариант для определения версии Python. Этот метод позволяет получить версию почти как в обычном разговоре:
import platform
print(platform.python_version())
Несовместимые версии Python: включаем тревожный сигнал!
Согласно принципам хорошего кода, следует вызывать исключение при обнаружении несовместимой версии Python. Это позволит заблаговременно предупредить о возможных трудностях:
import sys
if sys.version_info < (3, 5):
raise Exception("Требуется Python версии 3.5 или новее, обновите систему!")
Визуализация
Можно вообразить sys.version_info
как дисплей временной машины, на котором меняются версии Python:
Машина времени Python |
---|
Python 3.8 🛸 |
Python 3.7 🚀 |
Python 2.7 ⏳ |
Если индикатор указывает 2 (sys.version_info.major == 2
), значит, как будто мы вернулись в прошлое! ⏳
Если же он указывает 3 (sys.version_info.major == 3
), то мы живём сегодня и смотрим в завтра! 🚀🛸
Расширенное управление версиями Python
Разница в синтаксисе между версиями Python
Адаптация кода под специфические версии Python может включать условные импорты и функции, характерные для отдельных версий:
try:
from contextlib import redirect_stdout
except ImportError:
# Адаптировано для Python 2
Зависимости от версии для сторонних библиотек
При работе со сторонними библиотеками можно использовать условные зависимости в скриптах установки:
from setuptools import setup
setup(
install_requires=[
'library>=2,<3' if sys.version_info < (3, 0) else 'library>=3,<4'
]
)
Это означает выбор разных версий библиотек в зависимости от версии Python.
Явное указание версии в скриптах через shebang
Можно определить, какую версию Python должен использовать скрипт, с помощью строки shebang:
#!/usr/bin/env python3
Сравнение версий программно
Кортеж sys.version_info
позволяет сравнивать версии с помощью операций сложного сравнения. Это облегчает определение актуальности используемой версии Python:
import sys
min_version = (3, 5)
current_version = sys.version_info[:3]
if current_version >= min_version:
print("Версия Python вполне современная!")
else:
print("Пришло время обновить Python!")
Использование hexversion для упрощения сравнения версий
Атрибут sys.hexversion
предлагает простой способ для сравнения версий Python:
import sys
if sys.hexversion >= 0x03000000:
print("Вы используете Python 3 или более позднюю версию!")
Полезные материалы
- sys — Системно-специфические параметры и функции — документация Python 3.12.1 — официальная документация атрибута
sys.version_info
. - Модуль sys в Python – GeeksforGeeks — подробное руководство по модулю sys в Python.
- PEP 396 – Номера версий модулей — рекомендации по обозначению версий модулей в Python.
- platform — Доступ к идентифицирующим информациям о платформе — документация Python 3.12.1 — методы модуля platform на примере определения версий Python.
- Семантическое версионирование 2.0.0 — описание схемы версионирования для языка Python.
- Загрузка Python | Python.org — список всех версий Python.
- Шпаргалка: написание кода, совместимого с Python 2 и 3 — советы по созданию кода, совместимого с Python 2 и 3.