2010-01-18 12 views
5

मैं (दूसरों के बीच) md5 मॉड्यूल का उपयोग करता है एक पुराने प्लाई के संस्करण का उपयोग कर रहा:md5 मॉड्यूल त्रुटि

import re, types, sys, cStringIO, md5, os.path 

... हालांकि स्क्रिप्ट रन लेकिन इस त्रुटि के बिना नहीं:

DeprecationWarning: the md5 module is deprecated; use hashlib instead 

मैं इसे कैसे ठीक कर सकता हूं ताकि त्रुटि दूर हो जाए?

धन्यवाद

+2

क्या वहां कहीं कोई प्रश्न है? –

+0

प्रश्न: मैं इसे कैसे ठीक कर सकता हूं ताकि त्रुटि दूर हो जाए? – 3zzy

+0

क्या कोई कारण है कि आप md5 के बजाय sha1 का उपयोग नहीं कर सकते हैं? एमडी 5 उपयोग की सिफारिश नहीं है। – Anders

उत्तर

8

मुझे लगता है कि चेतावनी संदेश काफी सरल है। आप


from hashlib import md5 

करने की जरूरत है या आप अजगर < 2.5, http://docs.python.org/library/md5.html

+0

पहले से ही कोशिश की, लेकिन यह तब स्क्रिप्ट तोड़ देता है। विशेषता त्रुटि: "'buildin_function_or_method' ऑब्जेक्ट में कोई विशेषता नहीं है 'नया'" – 3zzy

+1

अच्छी तरह से, तो 2 md5 एक ही चीज़ नहीं हैं, आपको पुरानी कोड को फिर से लिखना होगा, 2) पाइथन <2.5, या 3 का उपयोग करें) अनदेखा करें चेतावनी। –

+1

@ 3zzy आपके पास कुछ आयात है 'आयात md5; md5.new (डेटा) .hexdigest() ', इसे हैशिलिब आयात md5 से बनाओ; md5 (डेटा) .hexdigest() '। पुरानी चीजें लेकिन मैं एक ही त्रुटि में कूद गया। – anttikoo

2

वह एक त्रुटि नहीं है, कि एक चेतावनी है उपयोग कर सकते हैं।

यदि आप अभी भी इससे छुटकारा पाने का आग्रह करते हैं तो कोड को संशोधित करें ताकि यह hashlib का उपयोग कर सके।

0

कृपया दस्तावेज़ here देखें, 28.5.3 आपको बहिष्कृत चेतावनियों को दबाने का एक तरीका देता है। या कमांड लाइन जब आप अपने स्क्रिप्ट चलाने, इस मुद्दे पर -W ignore::DeprecationWarning

0

मुझे लगता है कि चेतावनी ठीक है, फिर भी आप md5 मॉड्यूल, वरना hashlib मॉड्यूल का उपयोग कर सकते हैं md5 वर्ग में शामिल है

import hashlib 
a=hashlib.md5("foo") 
print a.hexdigest() 

इस प्रिंट होगा स्ट्रिंग के md5 चेकसम "foo"

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 

जैसा कि @ डिनो फू कहते हैं: आपको ट्रैक करना होगा कि आपका कोड वास्तव में एमडी 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"))