Якщо у мене є сценарій Python, який вимагає принаймні певної версії Python, який правильний спосіб виграшно вийти з ладу, коли для запуску сценарію використовується більш рання версія Python?
Як мені отримати контроль досить рано, щоб надіслати повідомлення про помилку та вийти?
Наприклад, у мене є програма, яка використовує оператор ternery (новий у 2.5) та блоки "with" (новий у 2.6). Я написав просту маленьку процедуру перевірки версії інтерпретатора, що перше, що закликав би сценарій ... за винятком того, що він не так далеко. Натомість сценарій виходить з ладу під час компіляції python, перш ніж мої підпрограми навіть будуть викликані. Таким чином, користувач сценарію бачить дуже незрозумілі відслідковування помилок синаксису - які, як правило, вимагають від експерта, щоб зробити висновок, що це просто випадок неправильної версії Python.
Я знаю, як перевірити версію Python. Проблема полягає в тому, що деякі синтаксиси є незаконними у старих версіях Python. Розглянемо цю програму:
import sys
if sys.version_info < (2, 4):
raise "must use python 2.5 or greater"
else:
# syntax error in 2.4, ok in 2.5
x = 1 if True else 2
print x
Коли я працює під 2.4, я хочу цього результату
$ ~/bin/python2.4 tern.py
must use python 2.5 or greater
а не цей результат:
$ ~/bin/python2.4 tern.py
File "tern.py", line 5
x = 1 if True else 2
^
SyntaxError: invalid syntax
(Спрямування для колеги.)