Come posso controllare quale versione dell'interprete Python sta interpretando il mio script?
Questa informazione è disponibile nella stringa sys.version nel modulo sys:
>>> import sys
Leggibile dall'uomo:
>>> 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)]
Per ulteriori elaborazioni:
>>> sys.version_info
(2, 5, 2, 'final', 0)
# or
>>> sys.hexversion
34014192
Per assicurarsi che uno script venga eseguito con un requisito minimo di versione dell'interprete Python, aggiungete questo al vostro codice:
assert sys.version_info >= (2, 5)
Questo confronta le informazioni sulla versione maggiore e minore. Aggiungete micro (=0
, 1
, ecc) e anche releaselevel (='alpha'
,'final'
, ecc) alla tupla come volete. Si noti comunque che è quasi sempre meglio "duck" controllare se una certa caratteristica è presente, e se non lo è, aggirare il problema (o tirarsi fuori). A volte le caratteristiche spariscono nelle nuove versioni, e vengono sostituite da altre.
La tua scommessa migliore è probabilmente qualcosa del genere:
>>> 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
>>>
Inoltre, puoi sempre avvolgere le tue importazioni in un semplice try, che dovrebbe catturare gli errori di sintassi. E, per @Heikki'punto, questo codice sarà compatibile con versioni molto più vecchie di python:
>>> try:
... from my_module import twoPointSixCode
... except Exception:
... print "can't import, probably because your python is too old!"
>>>