Hoe controleer ik welke versie van Python mijn script uitvoert?

Hoe kan ik controleren welke versie van de Python Interpreter mijn script interpreteert?

Oplossing

Deze informatie is beschikbaar in de string sys.version in de module sys:

>>> import sys

Menselijk leesbaar:

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

Voor verdere verwerking:

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

Om ervoor te zorgen dat een script draait met een minimaal vereiste versie van de Python interpreter voeg je dit toe aan je code:

assert sys.version_info >= (2, 5)

Dit vergelijkt major en minor versie informatie. Voeg micro (=0, 1, etc) en zelfs releaselevel (='alpha','final', etc) toe aan de tuple als je wilt. Merk echter op dat het bijna altijd beter is om "duck" te controleren of een bepaalde feature er is, en zo niet, workaround (of bail out). Soms gaan functies weg in nieuwere releases, en worden ze vervangen door andere.

Commentaren (5)

Je beste gok is waarschijnlijk iets als dit:

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

Bovendien kun je je imports altijd verpakken in een eenvoudige try, die syntaxfouten zou moeten opvangen. En, om @Heikki's punt, deze code zal compatibel zijn met veel oudere versies van python:

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

sys.version geeft je wat je wilt, kies gewoon het eerste nummer :)

Commentaren (1)