Verificar versão do Python durante a execução (runtime)

Diferença de versão e retrocompatibilidade são problemas que desenvolvedores tem que tratar com frequência. Uma das formas de se fazer isso com Python é verificando qual é a versão está sendo utilizada no momento. Abaixo estão algumas formas de se fazer isso.

A primeira delas é utilizando sys.version. Ele é uma string que retorna uma série de informações e podemos (facilmente) extrair apenas o número da versão:

>>> import sys
>>>
>>> print(sys.version)
'3.4.3 (default, Nov 17 2016, 01:08:31) \n[GCC 4.8.4]'
>>>
>>> print("Versão atual do Python: %s" % sys.version.split(" ")[0])
Current Python Version: 3.4.3

Como demonstrado, a propriedade sys.version retorna uma string com duas linhas. Uma das formas de extrair o número da versão seria quebrar (split) a string utilizando espaços como referência e pegar a primeira posição do vetor. A alternativa para o split(” “) seria utilizar sys.version[:5], mas quando um dos números da versão passar a utilizar duas casas (exemplo: 3.4.10), esta segunda forma irá falhar.

Existe uma segunda forma de se fazer isso é utilizando a sys.version_info. Ela retorna um vetor com as informações separadas, veja o exemplo:

>>> import sys
>>> 
>>> sys.version_info
sys.version_info(major=3, minor=4, micro=3, releaselevel='final', serial=0)
>>>
>>> version_detail  = "Major: %s\r\n" % sys.version_info[0]
>>> version_detail += "Minor: %s\r\n" % sys.version_info[1]
>>> version_detail += "Micro: %s\r\n" % sys.version_info[2]
>>> version_detail += "Release Level: %s\r\n" % sys.version_info[3]
>>> version_detail += "Serial: %s\r\n" % sys.version_info[4]
>>> print(version_detail)
Major: 3
Minor: 4
Micro: 3
Release Level: final
Serial: 0

Conforme demonstrado no exemplo acima, a sys.version_info retorna um vetor com as informações de versão separadas por: major, minor, micro, release level e serial. Desta forma, se a sua quebra de compatibilidade for entre Python 2 e 3, você pode utilizar apenas a informação de major ([0]) do vetor. Pessoalmente, acho esta abordagem mais flexível para fazer esta verificação.

Considerando estas duas formas, veja abaixo o exemplo de como verificar a versão atual do Python:

>>> import sys
>>>
>>> if sys.version_info[0] < 3:
...     print("Sorry, i need Python 3+ to run.")
... else:
...     print("Great! You're running Python 3! Let's do stuff!")
... 
Great! You're running Python 3! Let's do stuff!

Se quiser estes fontes de exemplo, eles estão disponíveis no nosso github.

Espero ter ajudado!

 

The following two tabs change content below.
Arquiteto de Software e Desenvolvedor Backend (quase Fullstack), geralmente trabalho com C#, PowerShell, Python, Golang, bash e Unity (esse é mais por hobby). Estou sempre buscando algo novo para aprender, adicionando novas ferramentas ao meu cinto de utilidades.
Posted in Dev, Python and tagged , , , , , , , , .