Question

Python 2.6 signale que le module md5 est obsolète et que hashlib doit être utilisé. Si je remplace import md5 par import hashlib , je résoudrai pour python 2.5 et python 2.6, mais pas pour python 2.4, qui ne comporte pas de module hashlib (conduisant à une ImportError, Je peux attraper).

Maintenant, pour résoudre ce problème, je pourrais faire un essai / attraper et définir une fonction getMd5 () afin qu’un correct soit défini en fonction du résultat du bloc try. Cette solution est-elle acceptable?

Comment résoudriez-vous ce problème dans un cas plus général, comme par exemple: vous avez deux bibliothèques différentes avec le même objectif, mais une interface différente, et vous souhaitez en utiliser une, mais utiliser l’autre si le premier on est introuvable.

Était-ce utile?

La solution

En général, la construction suivante convient parfaitement:

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

Dans votre cas particulier, peut-être:

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

Autres conseils

Dans le cas où les modules ont la même interface, comme ici, la solution que vous avez décrite est satisfaisante. Vous pouvez également isoler l'importation dans son propre module, comme suit:

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

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

Dans le cas où ils ont des interfaces différentes, vous devez écrire un adaptateur pour aligner les interfaces comme vous l'avez spécifié.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top