विशेषता: मॉड्यूल 'समय' में पायथन 3.8 में कोई विशेषता 'घड़ी' नहीं है


23

मैंने सार्वजनिक और निजी कुंजी बनाने के लिए कोड लिखा है। यह पायथन 3.7 में बहुत अच्छा काम करता है लेकिन यह पायथन 3.8 में विफल रहता है। मुझे नहीं पता कि यह नवीनतम संस्करण में कैसे विफल हो जाता है। कुछ उपाय करके मेरी मदद करो।

यहाँ कोड है:

from Crypto.PublicKey import RSA


def generate_keys():
    modulus_length = 1024
    key = RSA.generate(modulus_length)
    pub_key = key.publickey()
    private_key = key.exportKey()
    public_key = pub_key.exportKey()
    return private_key, public_key


a = generate_keys()
print(a)

पायथन 3.8 संस्करण में त्रुटि:

Traceback (most recent call last):
  File "temp.py", line 18, in <module>
    a = generate_keys()
  File "temp.py", line 8, in generate_keys
    key = RSA.generate(modulus_length)
  File "/home/paulsteven/.local/lib/python3.8/site-packages/Crypto/PublicKey/RSA.py", line 508, in generate
    obj = _RSA.generate_py(bits, rf, progress_func, e)    # TODO: Don't use legacy _RSA module
  File "/home/paulsteven/.local/lib/python3.8/site-packages/Crypto/PublicKey/_RSA.py", line 50, in generate_py
    p = pubkey.getStrongPrime(bits>>1, obj.e, 1e-12, randfunc)
  File "/home/paulsteven/.local/lib/python3.8/site-packages/Crypto/Util/number.py", line 282, in getStrongPrime
    X = getRandomRange (lower_bound, upper_bound, randfunc)
  File "/home/paulsteven/.local/lib/python3.8/site-packages/Crypto/Util/number.py", line 123, in getRandomRange
    value = getRandomInteger(bits, randfunc)
  File "/home/paulsteven/.local/lib/python3.8/site-packages/Crypto/Util/number.py", line 104, in getRandomInteger
    S = randfunc(N>>3)
  File "/home/paulsteven/.local/lib/python3.8/site-packages/Crypto/Random/_UserFriendlyRNG.py", line 202, in read
    return self._singleton.read(bytes)
  File "/home/paulsteven/.local/lib/python3.8/site-packages/Crypto/Random/_UserFriendlyRNG.py", line 178, in read
    return _UserFriendlyRNG.read(self, bytes)
  File "/home/paulsteven/.local/lib/python3.8/site-packages/Crypto/Random/_UserFriendlyRNG.py", line 129, in read
    self._ec.collect()
  File "/home/paulsteven/.local/lib/python3.8/site-packages/Crypto/Random/_UserFriendlyRNG.py", line 77, in collect
    t = time.clock()
AttributeError: module 'time' has no attribute 'clock'

क्राईटपो परिवाद में यहाँ उल्लेख किया गया है: github.com/dlitz/pycrypto/issues/283 लेकिन टिकट काफी साल से बंद नहीं हो रहा है।
फेबियन एंटोनी

जवाबों:


22

से अजगर 3.8 डॉक :

time.clock()पायथन 3.3 के बाद से हटाए जाने के बाद फ़ंक्शन को हटा दिया गया है: अच्छी तरह से परिभाषित व्यवहार करने के लिए, अपनी आवश्यकताओं के आधार पर उपयोग करें time.perf_counter()या time.process_time()इसके बजाय। ( बीपीओ -36895 में मथायस बुसोनियर द्वारा योगदान दिया गया ।)


1

मॉड्यूल जिसे आप कुंजी कॉल उत्पन्न करने के लिए उपयोग करते हैं एक विधि है जो कि अजगर 3.3 time.clock () के बाद से मूल्यह्रास कर दिया गया है ।

आप अजगर 3.7 को डाउनग्रेड कर सकते हैं या इसे बदलने के लिए स्रोत कोड बदल सकते हैं। आपको उसके लिए भी एक मुद्दा खोलना चाहिए।


0
AttributeError: module 'time' has no attribute 'clock' 

यह कहा गया है कि इसका मतलब है कि पुस्तकालयों के नवीनतम संस्करण का उपयोग करें जो कि मॉड्यूल है। उदाहरण के लिए, आपके पास निर्भरता के आधार पर, निकालें और इंस्टॉल करें

क्रिप्टो == 1.4.1, या माको == 1.1.2 या SQLAlchemy == 1.3.6 // आदि

विचार यह है कि आपको अपने अजगर संस्करण को डाउनग्रेड करने की आवश्यकता नहीं है क्योंकि यह बाद में आपको पकड़ लेगा। केवल उन पैकेजों को अधिक देर से अपडेट करें जो पायथन 3.8 के साथ संगत हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.