我正在使用旧版本的PLY,它使用md5模块(其中包括):
import re, types, sys, cStringIO, md5, os.path
...虽然脚本运行但没有出现此错误:
DeprecationWarning: the md5 module is deprecated; use hashlib instead
如何修复它以免错误消失?
由于
答案 0 :(得分:9)
我认为警告信息非常简单。你需要:
from hashlib import md5
或者您可以使用python< 2.5,http://docs.python.org/library/md5.html
答案 1 :(得分:2)
这不是错误,这是一个警告。
如果您仍然坚持要删除它,请修改代码,使其使用hashlib
代替。
答案 2 :(得分:2)
如上所述,警告可以被静音。而hashlib.md5(my_string)应该与md5.md5(my_string)相同。
>>> import md5
__main__:1: DeprecationWarning: the md5 module is deprecated; use hashlib instead
>>> import hashlib
>>> s = 'abc'
>>> m = md5.new(s)
>>> print s, m.hexdigest()
abc 900150983cd24fb0d6963f7d28e17f72
>>> m = hashlib.md5(s)
>>> print s, m.hexdigest()
abc 900150983cd24fb0d6963f7d28e17f72
>>> md5(s)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'module' object is not callable
>>> md5.md5(s)
<md5 HASH object @ 0x100493260>
>>> m = md5.md5(s)
>>> print s, m.hexdigest()
abc 900150983cd24fb0d6963f7d28e17f72
正如@Dyno Fu所说:您可能需要跟踪代码实际从md5调用的内容。
答案 3 :(得分:0)
请参阅文档here,28.5.3为您提供了一种抑制弃用警告的方法。或者在运行脚本时在命令行上发出-W ignore::DeprecationWarning
答案 4 :(得分:0)
我认为警告还可以,你仍然可以使用md5模块,否则hashlib模块包含md5类
import hashlib
a=hashlib.md5("foo")
print a.hexdigest()
这将打印字符串“foo”的md5校验和
答案 5 :(得分:0)
这样的事情怎么样?
try:
import warnings
warnings.catch_warnings()
warnings.simplefilter("ignore")
import md5
except ImportError as imp_err:
raise type(imp_err), type(imp_err)("{0}{1}".format(
imp_err.message,"Custom import message"))