Unterstützung mehrerer Python-Versionen in Ihrem Code?

8

Heute habe ich versucht, pyPdf 1.12 in einem Skript zu verwenden, das auf Python 2.6 basiert. Wenn ich mein Skript ausführe und sogar pyPdf importiere, bekomme ich Beschwerden über veraltete Funktionen (md5- & gt; hashsum, Sets). Ich würde gerne einen Patch beifügen, um dies in 2.6 sauber zu machen, aber ich stelle mir vor, dass der Autor die Kompatibilität für ältere Versionen (2.5 und früher) nicht aufheben will.

Suche Google und Stack Overflow haben bisher nichts ergeben. Ich habe das Gefühl, ich habe versucht, / try / except blocks import statements, bevor diese etwas ähnliches erreichen, aber keine Beispiele finden können. Gibt es eine allgemein anerkannte Best Practice für die Unterstützung mehrerer Python-Versionen?

    
technomalogical 07.10.2009, 15:48
quelle

3 Antworten

10

Dafür gibt es zwei Möglichkeiten:

(1) Genau wie Sie es beschrieben haben: Versuchen Sie etwas und umgehen Sie die Ausnahme für alte Versionen. Sie könnten beispielsweise versuchen, das Modul json zu importieren und eine Benutzerlandimplementierung zu importieren, falls dies fehlschlägt:

%Vor%

Dies ist ein Beispiel aus Django (sie benutzen diese Technik oft):

%Vor%

Wenn der Iterator reversed verfügbar ist, verwenden sie ihn. Andernfalls importieren sie ihre eigene Implementierung aus dem Paket utils .

(2) Vergleichen Sie die Version des Python-Interpreters explizit:

%Vor%

sys.version_info ist ein Tupel, das leicht mit ähnlichen Versionstupeln verglichen werden kann.

    
Ferdinand Beyer 07.10.2009, 15:55
quelle
4

Das können Sie sicherlich tun

%Vor%

In Python eintauchen - Ausnahmen für andere Zwecke verwenden

    
foosion 07.10.2009 15:53
quelle
0

Mehrere Versionen von Python werden hier unterstützt. Sie können a) bedingt die neuere Version verwenden, die ein wenig Arbeit braucht, oder b) die Warnungen ausschalten, was eigentlich der Standard sein sollte (und auf neueren Pythons liegt).

    
Mike Graham 23.02.2012 16:43
quelle

Tags und Links