Come controllare la versione Python negli script

  1. Metodo sys.version per controllare la versione di Python
  2. Metodo sys.version_info per controllare la versione di Python
  3. platform.python_version_version() metodo per controllare la versione Python
  4. Metodo del modulo six per verificare la versione di Python

In diverse circostanze, abbiamo bisogno di conoscere la versione Python, o più precisamente, la versione dell’interprete Python che sta eseguendo il file di script Python.

Metodo sys.version per controllare la versione di Python

Queste informazioni sulla versione possono essere recuperate da sys.version nel modulo sys.

In Python 2.x

>>> import sys
>>> sys.version
'2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)]'

o in Python 3.x

>>> import sys
>>> sys.version
'3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)]'

Metodo sys.version_info per controllare la versione di Python

sys.version restituisce una stringa contenente le informazioni della versione leggibile dall’interprete Python corrente. Ma le informazioni come major release number e micro release number hanno bisogno di un’ulteriore elaborazione per essere utilizzate nei codici.

sys.version_info risolve facilmente questo problema restituendo le informazioni della versione come tupla. I dati della versione che restituisce sono,

Dati Descrizione
major Numero di rilascio maggiore
micro Numero di rilascio della patch
minor Numero di rilascio minore
releaselevel alpha, beta, candidate o release
serial Numero di rilascio seriale
>>> import sys
>>> sys.version_info
sys.version_info(major=2, minor=7, micro=10, releaselevel='final', serial=0)

Si può confrontare la versione corrente con la versione di riferimento semplicemente usando gli operatori >, >=, ==, <=, <= o <<.

>>> import sys
>>> sys.version_info >= (2, 7)
True
>>> sys.version_info >= (2, 7, 11)
False

Potremmo aggiungere una assert negli script per assicurarci che lo script funzioni con il requisito di una versione Python minima.

import sys
assert sys.version_info >= (3, 7)

Si otterrà un AssertionError se l’interprete non soddisfa i requisiti di versione.

Traceback (most recent call last):
  File "C:\test\test.py", line 4, in <module>
    assert sys.version_info >= (3, 7)
AssertionError

platform.python_version_version() metodo per controllare la versione Python

python_version() nel modulo platform restituisce la versione Python come stringa major.minor.patchlevel.

>>> from platform import python_version
>>> python_version()
'3.7.0'

O simile a sys.version_info, platform ha anche un metodo per restituire la versione Python come tupla (major, minor, patchlevel) di stringhe - python_version_tuple().

>>> import platform
>>> platform.python_version_tuple()
('3', '7', '0')

Metodo del modulo six per verificare la versione di Python

Se si deve solo controllare se la versione Python è Python 2.x o Python 3.x, si può usare six module per fare il lavoro.

import six
if six.PY2:
    print "Python 2.x"
if six.PY3:
    print("Python 3.x")