Si j'ai un script Python qui nécessite au moins un particulier la version de Python, quelle est la bonne façon d'échouer gracieusement lorsqu'une version antérieure de Python est utilisé pour lancer le script?
Comment puis-je obtenir de contrôle assez tôt pour émettre un message d'erreur et la sortie?
Par exemple, j'ai un programme qui utilise le ternery opérateur (nouveau dans la version 2.5) et "par" blocs (2.6). J'ai écrit un simple petit interprète-version le vérificateur de routine qui est la première chose que le script serait appel ... sauf qu'il n'est pas loin. Au lieu de cela, l' script échoue au cours de python compilation, avant mes routines sont même appelés. Ainsi, l'utilisateur du script voit certains très obscur synax erreur de retraçage - qui assez bien besoin un expert pour en déduire que c'est tout simplement le cas de l'exécution de la mauvaise version de Python.
Je sais comment faire pour vérifier la version de Python. Le problème est que certains de la syntaxe est illégal dans les anciennes versions de Python. Considérons ce programme:
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
Lors de l'exécution sous 2.4, je veux ce résultat
$ ~/bin/python2.4 tern.py
must use python 2.5 or greater
et pas ce résultat:
$ ~/bin/python2.4 tern.py
File "tern.py", line 5
x = 1 if True else 2
^
SyntaxError: invalid syntax
(Canalisation pour un collègue.)