hashlib / md5. Compatibilità con python 2.4
-
07-07-2019 - |
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.
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.