Wie kann ich überprüfen, welche Python-Version mein Skript ausführt?

Wie kann ich überprüfen, welche Version des Python-Interpreters mein Skript interpretiert?

Lösung

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.

Kommentare (5)

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!"
>>>
Kommentare (4)
import sys
sys.version.split(' ')[0]

sys.version gibt Ihnen, was Sie wollen, wählen Sie einfach die erste Zahl :)

Kommentare (1)