hashlib / md5. Compatibilidade com python 2.4
-
07-07-2019 - |
Pergunta
Python 2.6 relatos de que o módulo MD5 é obsoleto e hashlib devem ser usados. Se eu mudar import md5
para import hashlib
vou resolver para Python 2.5 e 2.6 python, mas não para Python 2.4, que não tem módulo hashlib (levando a uma ImportError, o que eu posso pegar).
Agora, para corrigi-lo, eu poderia fazer um try / catch, e definir uma função getMd5 () para que uma adequada fica definida de acordo com o resultado do bloco try. É esta solução ok?
Como você resolveria este problema em um caso mais geral, como, por exemplo: você tem duas bibliotecas diferentes com a mesma interface objetiva, mas diferente, e você quiser usar um, mas cair para trás e usar a outra se a primeira um não foi encontrado.
Solução
Em geral o seguinte construção é muito bem:
try:
import module
except ImportError:
# Do something else.
No seu caso particular, talvez:
try:
from hashlib import md5
except ImportError:
from md5 import md5
Outras dicas
No caso em que os módulos têm a mesma interface, como fazem aqui, a solução que você descreveu é muito bem. Você também pode isolar a importação para o seu próprio módulo como este:
hash.py
----
try:
import hashlib.md5 as md5mod
except ImportError:
import md5 as md5mod
-----
prog.py
-----
from hash import md5mod
....
No caso em que eles têm interfaces diferentes que você precisa para escrever um adaptador para alinhar as interfaces que você tenha especificado.