Pregunta

python 2.6 informa que el módulo md5 está obsoleto y se debe usar hashlib. Si cambio import md5 a import hashlib , resolveré para python 2.5 y python 2.6, pero no para python 2.4, que no tiene un módulo hashlib (que conduce a un ImportError, que Puedo atrapar).

Ahora, para solucionarlo, podría hacer un try / catch y definir una función getMd5 () para que se defina una adecuada según el resultado del bloque try. ¿Esta solución está bien?

¿Cómo resolvería este problema en un caso más general, como por ejemplo: tiene dos bibliotecas diferentes con el mismo objetivo pero con una interfaz diferente, y desea usar una, pero retroceda y use la otra si es la primera? uno no se encuentra.

¿Fue útil?

Solución

En general, la siguiente construcción está bien:

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

En su caso particular, tal vez:

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

Otros consejos

En el caso de que los módulos tengan la misma interfaz, como lo hacen aquí, la solución que describió está bien. También puede aislar la importación en su propio módulo de esta manera:

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

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

En el caso de que tengan interfaces diferentes, necesitará escribir un adaptador para alinear las interfaces como ha especificado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top