Frage

Welche Methode ist am sinnvollsten für ein Modul in Python importieren, die Version spezifisch ist? Mein Anwendungsfall ist, dass ich Code ich schreibe, die in eine Python 2.3-Umgebung und in ein paar Monaten auf 2,5 Python aufgerüstet werden eingesetzt werden. Dies:

if sys.version_info[:2] >= (2, 5):
    from string import Template
else:
    from our.compat.string import Template

oder das

try:
    from string import Template
except ImportError:
    from our.compat.string import Template

Ich weiß, dass jeder Fall gleich richtig ist und funktioniert einwandfrei, aber welches ist vorzuziehen?

War es hilfreich?

Lösung

Sie immer die zweite Möglichkeit - man kann nie wissen, was andere Python-Installationen installiert haben werden. Template ist ein spezieller Fall, in dem es weniger wichtig ist, aber wenn Sie testen, für die Fähigkeit anstelle der Versionierung du bist immer robuster.

Das ist, wie ich machen Testoob Python unterstützen 2,2-2,6: Ich versuche, ein Modul auf verschiedene Weise, bis es zu importieren funktioniert. Es ist auch relevant für 3rd-Party-Bibliotheken.

Hier ist ein Extremfall - unterstützt verschiedene Optionen für ElementTree erscheinen:

try: import elementtree.ElementTree as ET
except ImportError:
    try: import cElementTree as ET
    except ImportError:
        try: import lxml.etree as ET
        except ImportError:
            import xml.etree.ElementTree as ET # Python 2.5 and up

Andere Tipps

Ich würde wahrscheinlich argumentieren, dass die zweite vorzuziehen wäre. Manchmal können Sie ein Modul aus einer neueren Version von Python in einem älteren installieren. Zum Beispiel kommt wsgiref mit Python 2.5, aber es ist nicht ganz ungewöhnlich, es in ältere Versionen installiert werden (ich glaube, es mit Python 2.3 bis funktionieren wird).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top