Python Version abfragen

Manchmal möchte man abfragen, unter welcher Version von Python 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:

   1 from sys import version_info
   2 if version_info < (2,2): # check for version < 2.2
   3     from UserList import UserList
   4     class MyList(UserList):
   5         def __init__(self):
   6             self.data = []
   7             ...
   8 else:
   9     class MyList(list):
  10         def __init__(self):
  11             ...

sys.version_info ist bei Verson 2.1.3 z.B. folgendes 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.

   1 >>> a = [1,2,3]
   2 >>> [0,1,2] < a < [2,3,4]
   3 True
   4 >>> a < [0,1]
   5 False
   6 >>> a < [2,3]
   7 True


Entnommen aus Pythonversion abfragen siehe auch Klasse für Versionsinformationen


Grundsätzlich ist es jedoch sinnvoller, nicht mit Versionen zu hantieren, sondern gleich zu testen, ob das gewünschte Feature vorhanden ist. Zum Beispiel können Skripte, die True und False brauchen, aber auch in Versionen laufen müssen, in denen dies keine Builtins waren, folgendes tun:

   1 try:
   2     True
   3 except:
   4     True = (1 == 1)
   5     False = not True

So macht man sich nicht von Versionen abhängig, die man schnell verwechseln kann.

Python Version abfragen (last edited 2009-06-17 16:14:27 by localhost)