Pythonversion abfragen

Code-Stücke können hier veröffentlicht werden.
Antworten
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hallo,

manchmal, möchte man abfragen unter welcher Pythonversion ein Script läuft, wenn man z.B. Features von 2.2 verwendet, die unter früheren Versionen einen Workaround benötigen.
Hier mal ein Beispiel:

Code: Alles auswählen

from sys import version_info
if version_info < (2,2): # check for version < 2.2
    from UserList import UserList
    class MyList(UserList):
        def __init__(self):
            self.data = []
            ...
else:
    class MyList(list):
        def __init__(self):
            ...
sys.version_info ist bei Verson 2.1.3 z.B. filgendes Tuple (2, 1, 3, 'final', 0)
Das Ganze beruht auf der Möglichkeit Tuples (und auch Listen) miteinander zu vergleichen, die auch eine unterschiedliche anzahl von Elementen haben.

Code: Alles auswählen

>>> a = [1,2,3]
>>> [0,1,2] < a < [2,3,4]
1
>>> a < [0,1]
0
>>> a < [2,3]
1
>>> 
Gruß

Dookie
Benutzeravatar
strogon14
User
Beiträge: 58
Registriert: Sonntag 23. Februar 2003, 19:34
Wohnort: Köln
Kontaktdaten:

Das große Problem mit version_info ist, es gibt es auch erst seit Python 2.0 und ist damit selbst versionsabhängig.

Man könnte als Lösung die erste Zeile in Deinem Code durch folgendes ersetzen:

Code: Alles auswählen

import sys

if hasattr(sys, 'version_info'):
    version_info = sys.version_info
else:
    import string
    version_info = tuple(map(int, 
      string.split(string.split(sys.version)[0], '.', 2)))
Das sollte auch mit Python 1.5.x funktionieren.
Antworten