Question Comment puis-je vérifier quelle version de Python exécute mon script?


Comment puis-je vérifier quelle version de l'interpréteur Python interprète mon script?


843
2017-07-07 16:17


origine


Réponses:


Cette information est disponible dans le sys.version chaîne dans le sys module:

>>> import sys

Lisible par l'homme:

>>> print (sys.version) #parentheses necessary in python 3.       
2.5.2 (r252:60911, Jul 31 2008, 17:28:52) 
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)]

Pour un traitement ultérieur:

>>> sys.version_info
(2, 5, 2, 'final', 0)
# or
>>> sys.hexversion
34014192

Pour vous assurer qu'un script s'exécute avec une version minimale de l'interpréteur Python, ajoutez ceci à votre code:

assert sys.version_info >= (2,5)

Cela compare les informations de version majeure et mineure. Ajouter un micro (=0, 1, etc) et même releaselevel (='alpha','final', etc) au tuple comme vous voulez. Notez cependant, qu'il est presque toujours préférable de "canard" vérifier si une certaine fonctionnalité est là, et sinon, solution de contournement (ou renflouer). Parfois, les fonctionnalités disparaissent dans les versions les plus récentes, remplacées par d'autres.


1042
2017-07-07 16:20



De la ligne de commande (notez la capitale 'V'):

python -V

Ceci est documenté dans 'man python'.


266
2017-07-22 19:50



J'aime sys.hexversion pour des trucs comme ça.

http://docs.python.org/library/sys.html#sys.hexversion

>>> import sys
>>> sys.hexversion
33883376
>>> '%x' % sys.hexversion
'20504f0'
>>> sys.hexversion < 0x02060000
True

89
2018-06-10 20:08



Votre meilleur pari est probablement quelque chose comme ça:

>>> import sys
>>> sys.version_info
(2, 6, 4, 'final', 0)
>>> if not sys.version_info[:2] == (2, 6):
...    print "Error, I need python 2.6"
... else:
...    from my_module import twoPointSixCode
>>> 

En outre, vous pouvez toujours envelopper vos importations dans un essai simple, qui devrait attraper des erreurs de syntaxe. Et, pour le point de @ Heikki, ce code sera compatible avec des versions beaucoup plus anciennes de python:

>>> try:
...     from my_module import twoPointSixCode
... except Exception: 
...     print "can't import, probably because your python is too old!"
>>>

60
2018-06-10 16:06



Utilisation platformde python_version du stdlib:

>>> from platform import python_version
>>> print(python_version())
2.7.8

47
2017-08-25 01:11



Mettez quelque chose comme:

#!/usr/bin/env/python
import sys
if sys.version_info<(2,6,0):
  sys.stderr.write("You need python 2.6 or later to run this script\n")
  exit(1)

en haut de votre script.

Notez qu'en fonction de ce qui se trouve dans votre script, les anciennes versions de python ne sont peut-être pas capables de charger le script, donc elles ne seront pas assez loin pour signaler cette erreur. Pour contourner le problème, vous pouvez exécuter ce qui précède dans un script qui importe le script avec le code plus moderne.


46
2018-06-10 16:08



Voici une version courte de la ligne de commande qui sort tout de suite (pratique pour les scripts et l'exécution automatisée):

python -c "print(__import__('sys').version)"

Ou juste le majeur, mineur et micro:

python -c "print(__import__('sys').version_info[:1])" # (2,)
python -c "print(__import__('sys').version_info[:2])" # (2, 7)
python -c "print(__import__('sys').version_info[:3])" # (2, 7, 6)

20
2017-09-02 20:02