Vérification de la Version de l'Interpréteur Python Lors de l'Exécution du Script Avec la Syntaxe non Valide
J'ai un script Python qui utilise la version de Python 2.6 syntaxe (Sauf erreur comme valeur🙂 la version 2.5 en plaint. Donc, dans mon script, j'ai inclus un peu de code pour vérifier l'interpréteur Python version avant de procéder ainsi à l'utilisateur de ne pas obtenir le coup avec une méchante erreur, cependant, peu importe où je place ce code, ça ne fonctionne pas. Une fois qu'il frappe l'étrange syntaxe qu'il jette l'erreur de syntaxe, en faisant abstraction de toutes les tentatives de la mine de vérification de version.
Je sais que je pourrais tout simplement de placer un try/except bloc-dessus de la zone de la SyntaxError se produit et générer le message, mais je me demande si il est plus "élégant". Comme je ne suis pas très désireux de placer les blocs try/except tout mon code pour résoudre le problème de version. J'ai regardé dans l'aide d'une __ init__.py fichier, mais l'utilisateur ne sera pas de l'import ou à l'aide de mon code comme un paquet, donc je ne pense pas que la route va fonctionner, à moins que quelque chose m'échappe...
Voici ma version de code de vérification:
import sys
def isPythonVersion(version):
if float(sys.version[:3]) >= version:
return True
else:
return False
if not isPythonVersion(2.6):
print "You are running Python version", sys.version[:3], ", version 2.6 or 2.7 is required. Please update. Aborting..."
exit()
OriginalL'auteur Stunner | 2010-09-21
Vous devez vous connecter pour publier un commentaire.
Créer un script qui vérifie la version et les appels de votre script réel -- cela vous donne une chance de vérifier la version avant de l'interprète tente de syntaxe-vérifier le script réel.
N'est-ce pas inutile?
Comment est-il inutile? L'ensemble de ce module est de la syntaxe vérifié avant d'une seule ligne de code est exécuté, il n'est donc pas possible de prendre SyntaxError ou d'effectuer des vérifications de version avant qu'il soit trop tard sans un script.
OriginalL'auteur bstpierre
Quelque chose comme ça en début de code?
J'ai eu un problème similaire et qui avait aussi tenté cette approche, mais, malheureusement, cette astuce ne fonctionne pas dans les cas où le code utilise la syntaxe n'est pas compatible avec la version de python en cours d'exécution. C'est parce que l'interprète vérifie la syntaxe de votre code avant de compiler/exécuter. Ainsi, le "si ...", ne sera jamais exécuter si, par exemple, vous avez un énoncé ailleurs dans votre code n'est pas compatible avec la version actuelle de python (par exemple, impression(..., fichier=sys.stderr), où le 'dossier' mot-clé n'est pas compatible avec les anciennes python.
OriginalL'auteur Tony Veijalainen
Dans
sys.version_info
vous trouverez les informations sur la version stockée dans un tuple:Maintenant, vous pouvez comparer:
Ce ne serait pas fiable, que la division se comporte différemment entre 2 et 3, Par exemple 2.6 ne serait pas égal à 2 + (6/10). 2 + (6/10)= 2.0
OriginalL'auteur eumiro
Si la vitesse n'est pas une priorité, vous pouvez éviter ce problème en utilisant
sys.exc_info
pour saisir les détails de la dernière exception à la règle.OriginalL'auteur Katriel