Python2.6报告说md5模块已经过时,应该使用hashlib。如果我将import md5更改为import hashlib,我将解析Python2.5和Python2.6,但不解析Python2.4,它没有hashlib模块(导致ImportError,我可以捕获它)。
现在,为了修复它,我可以执行一个try/catch,并定义一个getMd5()函数,以便根据try块的结果定义一个合适的函数。这个解决方案可以吗?
在更一般的情况下,您如何解决此问题,例如:您有两个具有相同目标但不同接口的不同库,您希望使用其中一个库,但如果找不到第一个库,则回退并使用另一个库。
发布于 2009-09-14 20:54:25
一般来说,下面的构造就很好了:
try:
import module
except ImportError:
# Do something else.在您的特定情况下,也许:
try:
from hashlib import md5
except ImportError:
from md5 import md5发布于 2009-09-14 20:57:10
在模块具有相同接口的情况下,就像这里一样,您描述的解决方案很好。您还可以将导入隔离到它自己的模块中,如下所示:
hash.py
----
try:
import hashlib.md5 as md5mod
except ImportError:
import md5 as md5mod
-----
prog.py
-----
from hash import md5mod
....在它们具有不同接口的情况下,您需要编写一个适配器来按照您指定的方式对齐这些接口。
https://stackoverflow.com/questions/1423861
复制相似问题