python3 online from create python import md5 backwards-compatibility hashlib

online - hashlib/md5. Compatibilidad con python 2.4



python md5 file (2)

python 2.6 informa que el módulo md5 está obsoleto y debe usarse hashlib. Si cambio import md5 para import hashlib , resolveré para python 2.5 y python 2.6, pero no para python 2.4, que no tiene ningún módulo hashlib (lo que lleva a ImportError, que puedo capturar).

Ahora, para solucionarlo, podría intentar / capturar y definir una función getMd5 () para que se defina una adecuada de acuerdo con 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, si tiene dos bibliotecas diferentes con el mismo objetivo pero diferente interfaz, y desea usar una, pero retroceda y use la otra si la primera no es encontró.


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


En el caso donde los módulos tienen 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 en que tengan diferentes interfaces, necesitarás escribir un adaptador para alinear las interfaces como lo has especificado.