Ich versuche, ein vorwärts kompatibles Programm zu schreiben, und ich fragte mich, was die "beste" Möglichkeit, den Fall zu behandeln, wo Sie verschiedene Importe benötigen.Standardlösung für die Unterstützung von Python 2 und Python 3
In meinem speziellen Fall verwende ich ConfigParser.SafeConfigParser()
von Python2, die configparser.ConfigParser()
in Python3 wird.
Bisher habe ich es entweder mit einem try-except auf den Import oder durch eine bedingte auf die Version von Python (mit sys
) funktioniert. Beide funktionieren, aber ich frage mich, ob es eine empfohlene Lösung gibt (vielleicht eine, die ich noch nicht ausprobiert habe).
ETA: Danke allen. Ich habe six.moves
ohne Probleme verwendet.
Es gibt alle möglichen Gründe außer der Python-Version, warum ein Import eine Ausnahme auslösen könnte! Die Konditionierung von sys.version_info muss also die bessere der beiden Ideen sein. – nigel222
@ nigel222 Importe von der stdlib sollten keine Ausnahmen auslösen; wenn sie haben Sie viel größere Probleme. Die Versionskontrolle ist spröder und bringt nichts. – tzaman
Es handelte sich nicht explizit nur um stdlib und nicht um bedingten Import im Allgemeinen. Auch "größere Probleme" sind häufiger, als Sie vielleicht denken, wenn das System ein Desktop ist, der von jemandem ohne IT-Hintergrund verwaltet wird (Bastler, Universitätsforscher, etc.) würde ich lieber direkt von ihnen wissen, anstatt ein Debuggen zu müssen falscher Import, der früher "funktioniert" hat! – nigel222