Wie kann ich überprüfen, welche Version des Python-Interpreters mein Skript interpretiert?
Diese Informationen sind in der Zeichenkette sys.version im Modul sys verfügbar:
>>> import sys
Menschlich lesbar:
>>> 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)]
Zur weiteren Verarbeitung:
>>> sys.version_info
(2, 5, 2, 'final', 0)
# or
>>> sys.hexversion
34014192
Um sicherzustellen, dass ein Skript mit einer minimalen Versionsanforderung des Python-Interpreters läuft, fügen Sie dies zu Ihrem Code hinzu:
assert sys.version_info >= (2, 5)
Dies vergleicht Major- und Minor-Versionsinformationen. Fügen Sie Micro (=0
, 1
, etc) und sogar Releaselevel (='alpha'
,'final'
, etc) zu dem Tupel hinzu, wie Sie wollen. Beachten Sie jedoch, dass es fast immer besser ist, zu prüfen, ob eine bestimmte Funktion vorhanden ist, und wenn nicht, diese zu umgehen (oder zu überspringen). Manchmal verschwinden Funktionen in neueren Versionen und werden durch andere ersetzt.
Die beste Lösung ist wahrscheinlich so etwas wie:
>>> 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
>>>
Außerdem können Sie Ihre Importe immer in ein einfaches try verpacken, das Syntaxfehler abfangen sollte. Und, um @Heikki's Punkt, dieser Code wird mit viel älteren Versionen von Python kompatibel sein:
>>> try:
... from my_module import twoPointSixCode
... except Exception:
... print "can't import, probably because your python is too old!"
>>>