Если у меня есть Python script, который требует, по крайней мере, определенного версия Python, каков правильный способ неудачного изложения когда более ранняя версия Python используется для запуска script?
Как мне получить контроль на достаточно раннем этапе, чтобы выпустить сообщение об ошибке и выйти?
Например, у меня есть программа, которая использует оператор ternery (новый в 2.5) и "с" блоками (новый в 2.6). Я написал простую небольшую интерпретационную версию который является первым, что script звоните... кроме того, что это не так далеко. Вместо этого script сбой во время компиляции python, перед моими подпрограммами даже называются. Таким образом, пользователь script видит очень скрытые ошибки отслеживания синаксии - которые в значительной степени требуют эксперт, чтобы вывести, что это просто случай запуска неправильная версия 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
(Канал для сотрудника.)