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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top