hashlib / md5. 与Python 2.4的兼容性
在Python 2.6中,md5模块被认为过时了,建议使用hashlib模块。如果我把import md5
改成import hashlib
,这样就能在Python 2.5和2.6中正常工作,但在Python 2.4中就不行,因为它没有hashlib模块(这会导致一个导入错误,我可以捕获这个错误)。
为了修复这个问题,我可以使用一个尝试/捕获的方式,定义一个getMd5()函数,这样就可以根据尝试的结果来定义一个合适的函数。这样做可以吗?
如果要在更一般的情况下解决这个问题,比如说你有两个不同的库,它们的功能相同但接口不同,你想使用其中一个,如果找不到再使用另一个,你会怎么做呢?
2 个回答
2
如果这些模块的接口是一样的,就像这里一样,你提到的解决方案是可以的。你也可以把导入的部分单独放到一个模块里,像这样:
hash.py
----
try:
import hashlib.md5 as md5mod
except ImportError:
import md5 as md5mod
-----
prog.py
-----
from hash import md5mod
....
如果它们的接口不一样,你就需要写一个适配器来调整这些接口,使它们能够匹配你所要求的。
18
一般来说,下面这个写法是完全可以的:
try:
import module
except ImportError:
# Do something else.
在你具体的情况下,可能可以这样写:
try:
from hashlib import md5
except ImportError:
from md5 import md5