hashlib / md5. Kompatibilität mit Python 2.4
-
07-07-2019 - |
Frage
Python 2.6 Berichte, dass die md5-Modul ist veraltet und hashlib verwendet werden soll. Wenn ich import md5
ändern import hashlib
I 2.6, für Python 2.5 und Python lösen, aber nicht für Python 2.4, die keine hashlib Modul hat (was zu einem Import, die ich fangen kann).
Nun, um es zu beheben, kann ich ein try / catch tun, und definiere Funktion einer getMd5 (), so dass ein ordnungsgemäßer ein entsprechend das Ergebnis der try-Blöcke definiert wird. Diese Lösung ist in Ordnung?
Wie würden Sie dieses Problem in einem allgemeineren Fall lösen, wie zum Beispiel: Sie haben zwei verschiedene Bibliotheken mit der gleichen Ziel, aber unterschiedlicher Schnittstelle, und Sie möchten ein verwenden, aber zurückgreifen und mit dem anderen, wenn den ersten ein nicht gefunden wird.
Lösung
Im Allgemeinen ist das folgende Konstrukt ist gut so:
try:
import module
except ImportError:
# Do something else.
In Ihrem speziellen Fall vielleicht:
try:
from hashlib import md5
except ImportError:
from md5 import md5
Andere Tipps
In dem Fall, dass die Module die gleiche Schnittstelle hat, wie sie hier tun, die Lösung, die Sie beschrieben in Ordnung ist. Sie könnten auch den Import in ein eigenes Modul wie folgt isolieren:
hash.py
----
try:
import hashlib.md5 as md5mod
except ImportError:
import md5 as md5mod
-----
prog.py
-----
from hash import md5mod
....
In dem Fall, wo sie verschiedene Schnittstellen haben Sie müssten einen Adapter schreiben die Schnittstellen auszurichten, wie Sie angegeben haben.