Domanda

python 2.6 riporta che il modulo md5 è obsoleto e deve essere usato l'hashlib. Se cambio import md5 in import hashlib risolverò per python 2.5 e python 2.6, ma non per python 2.4, che non ha un modulo hashlib (che porta a un ImportError, che Posso catturare).

Ora, per risolverlo, potrei fare un tentativo / catch e definire una funzione getMd5 () in modo che una corretta venga definita in base al risultato del blocco try. Questa soluzione è ok?

Come risolveresti questo problema in un caso più generale, come ad esempio: hai due librerie diverse con lo stesso obiettivo ma un'interfaccia diversa e vuoi usarne una, ma fallisci e usa l'altra se la prima uno non è stato trovato.

È stato utile?

Soluzione

In generale il seguente costrutto va bene:

try:
    import module
except ImportError: 
    # Do something else.

Nel tuo caso particolare, forse:

try: 
   from hashlib import md5
except ImportError:
   from md5 import md5

Altri suggerimenti

Nel caso in cui i moduli abbiano la stessa interfaccia, come fanno qui, la soluzione che hai descritto va bene. Puoi anche isolare l'importazione nel suo modulo in questo modo:

hash.py
----
try:
   import hashlib.md5 as md5mod
except ImportError:
   import md5 as md5mod

-----
prog.py
-----
from hash import md5mod
....

Nel caso in cui abbiano interfacce diverse, è necessario scrivere un adattatore per allineare le interfacce come specificato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top