Como verificar a versão Python nos scripts

  1. Método sys.version para verificar a versão em Python
  2. Método sys.version_info para verificar a versão em Python
  3. platform.python_version() método para verificar a versão do Python
  4. six Método de módulo para verificar a versão Python

Em diferentes circunstâncias, precisamos conhecer a versão Python, ou mais precisamente, a versão Python interpreter que está executando o arquivo de scripts Python.

Método sys.version para verificar a versão em Python

Esta informação da versão pode ser recuperada a partir da sys.version no módulo sys.

Em Python 2.x

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

ou em 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)]'

Método sys.version_info para verificar a versão em Python

O sys.version retorna uma string contendo a informação da versão legível por humanos do atual intérprete Python. Mas as informações como major release number e micro release number precisam de processamento extra para serem derivadas para posterior utilização nos códigos.

O sys.version_info resolve este problema facilmente retornando a informação da versão como um tuple nomeado. Os dados da versão que ele retorna são,

Dados Descrição
major Número de lançamento principal
micro Número de liberação do patch
minor Número de liberação menor
releaselevel alpha, beta, candidate ou release
serial Número de lançamento em série
>>> import sys
>>> sys.version_info
sys.version_info(major=2, minor=7, micro=10, releaselevel='final', serial=0)

Você poderia comparar a versão atual com a versão de referência simplesmente utilizando operadores >, >=, ==, <= ou <.

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

Poderíamos adicionar um assert nos scripts para ter certeza que o script roda com o requerimento de uma versão mínima do Python.

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

Ele irá levantar um AssertionError se o interpretador não atender ao requisito da versão.

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

platform.python_version() método para verificar a versão do Python

python_version() in platform module retorna a versão Python como string major.minor.patchlevel.

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

Ou similar a sys.version_info, platform também tem um método para retornar a versão Python como tuple (major, minor, patchlevel) de strings - python_version_tuple()

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

six Método de módulo para verificar a versão Python

Se você só precisa verificar se a versão Python é Python 2.x ou Python 3.x, você pode usar six módulo para fazer o trabalho.

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