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.

War es hilfreich?

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.

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