python 2.6报告md5模块已过时,应使用hashlib。如果我将 import md5 更改为 import hashlib ,我将解决python 2.5和python 2.6,但不适用于没有hashlib模块的python 2.4(导致ImportError,我可以抓住。)

现在,要修复它,我可以执行try / catch,并定义一个getMd5()函数,以便根据try块的结果定义一个正确的函数。这个解决方案好吗?

如何在更一般的情况下解决此问题,例如:您有两个不同的库具有相同的目标但不同的界面,并且您想要使用一个,但如果是第一个,请退回并使用另一个找不到一个。

有帮助吗?

解决方案

一般来说,下面的结构很好:

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

在您的特定情况下,或许:

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

其他提示

如果模块具有相同的接口,就像它们在这里一样,您描述的解决方案很好。您也可以将导入隔离到自己的模块中,如下所示:

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

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

如果它们具有不同的接口,则需要编写适配器以按指定的方式对齐接口。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top