HOWTO · Python

Come controllare la versione Python negli script

Questo tutorial introduce come verificare quale versione di Python sta interpretando gli script.

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() 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.

from __future__ import print_function

import six

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