hashlib / md5. 与Python 2.4的兼容性

8 投票
2 回答
6057 浏览
提问于 2025-04-15 14:19

在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

撰写回答