Come posso controllare quale versione di Python sta eseguendo il mio script?

Come posso controllare quale versione dell'interprete Python sta interpretando il mio script?

Soluzione

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.

Commentari (5)

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!"
>>>
Commentari (4)
import sys
sys.version.split(' ')[0]

sys.version ti dà quello che vuoi, basta scegliere il primo numero :)

Commentari (1)