Если у меня есть сценарий 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
(Ченнелинг для коллеги.)