python 2.6报告md5模块已过时,应使用hashlib。如果我将import md5
更改为import hashlib
,我将解决python 2.5和python 2.6,但不适用于没有hashlib模块的python 2.4(导致ImportError,我可以捕获)。
现在,要修复它,我可以执行try / catch,并定义一个getMd5()函数,以便根据try块的结果定义一个正确的函数。这个解决方案好吗?
如何在更一般的情况下解决此问题,例如:您有两个不同的库具有相同的目标但不同的界面,并且您想要使用一个,但如果是第一个,请退回并使用另一个找不到一个。
答案 0 :(得分:18)
一般来说,下面的结构很好:
try:
import module
except ImportError:
# Do something else.
在您的特定情况下,或许:
try:
from hashlib import md5
except ImportError:
from md5 import md5
答案 1 :(得分:2)
如果模块具有相同的接口,就像它们在这里一样,您描述的解决方案很好。您也可以将导入隔离到自己的模块中,如下所示:
hash.py
----
try:
import hashlib.md5 as md5mod
except ImportError:
import md5 as md5mod
-----
prog.py
-----
from hash import md5mod
....
如果它们具有不同的接口,则需要编写适配器以按指定的方式对齐接口。