Como posso verificar qual versão do Python está rodando meu script?

Como posso verificar que versão do Python Interpreter está a interpretar o meu guião?

Solução

Esta informação está disponível na string sys.version no módulo sys:

>>> import sys

Legível para humanos:

>>> 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)]

Para processamento posterior:

>>> sys.version_info
(2, 5, 2, 'final', 0)
# or
>>> sys.hexversion
34014192

Para garantir que um script seja executado com um requisito mínimo de versão do intérprete Python, adicione isso ao seu código:

assert sys.version_info >= (2, 5)

Isto compara as informações das versões maior e menor. Adicione micro (=0, 1, etc) e até o nível de lançamento (='alpha','final', etc) ao tuple como você quiser. Note, no entanto, que é quase sempre melhor "pato" verificar se uma determinada funcionalidade está lá, e se não estiver, trabalhar (ou sair). Às vezes as funcionalidades desaparecem em lançamentos mais recentes, sendo substituídas por outras.

Comentários (5)

A tua melhor aposta é provavelmente algo do género:

>>> 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
>>> 

Além disso, você pode sempre embrulhar suas importações em uma simples tentativa, o que deve pegar erros de sintaxe. E, para o @Heikki, este código será compatível com versões muito mais antigas de python:

>>> try:
...     from my_module import twoPointSixCode
... except Exception: 
...     print "can't import, probably because your python is too old!"
>>>
Comentários (4)
import sys
sys.version.split(' ')[0]

sys.version dá-lhe o que você quer, basta escolher o primeiro número :)

Comentários (1)