hashlib/md5。与Python2.4兼容

2024-05-16 14:41:28 发布

您现在位置:Python中文网/ 问答频道 /正文

python 2.6报告md5模块已经过时,应该使用hashlib。如果我将import md5更改为import hashlib,我将为python 2.5和python2.6解决问题,但不会为没有hashlib模块的python2.4解决问题(这会导致一个ImportError,我可以捕获它)。

现在,为了解决这个问题,我可以做一个try/catch,并定义一个getMd5()函数,以便根据try块的结果定义一个合适的函数。这个办法行吗?

如何在更一般的情况下解决这个问题,例如:您有两个目标相同但接口不同的不同库,您希望使用其中一个库,但如果找不到第一个库,请返回并使用另一个库。


Tags: 模块函数import目标定义报告情况md5
2条回答

一般来说,以下构造是很好的:

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
....

在它们有不同接口的情况下,您需要编写一个适配器来按照您指定的方式对齐接口。

相关问题 更多 >