AttributeError: 'time' modülünün Python 3.8'de 'clock' özelliği yok


23

Ortak ve özel anahtarlar oluşturmak için kod yazdım. Python 3.7'de harika çalışıyor, ancak Python 3.8'de başarısız oluyor. En son sürümde nasıl başarısız olduğunu bilmiyorum. Bazı çözümlerde bana yardım et.

Kod İşte:

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)

Python 3.8 sürümünde hata:

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'

burada Crytpo lib'de atıfta bulunuldu: github.com/dlitz/pycrypto/issues/283 Ancak bilet bir yıldan beri kapalı değil gibi görünüyor.
Fabien Antoine

Yanıtlar:


22

Gönderen Python 3.8 doc :

İşlev time.clock(), Python 3.3'ten beri kullanımdan kaldırıldıktan sonra kaldırıldı: iyi tanımlanmış bir davranışa sahip olmak için gereksinimlerinize bağlı olarak kullanın time.perf_counter()veya time.process_time()kullanın. (Matthias Bussonnier tarafından bpo-36895'te yazılmıştır .)


1

Anahtar oluşturmak için kullandığınız modül, python 3.3 time.clock () 'den bu yana amortismana tabi tutulmuş bir yöntemi çağırır .

Python 3.7'ye geçebilir veya değiştirmek için kaynak kodunu değiştirebilirsiniz. Bunun için de bir sorun açmalısınız.


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

Söylendiği gibi kullanımdan kaldırılmıştır, bu da sadece bu modüle sahip kütüphanelerin en son sürümlerini kullanmak anlamına gelir. Örneğin, sahip olduğunuz bağımlılığa bağlı olarak Kaldır ve Yükle

Kripto == 1.4.1 veya Mako == 1.1.2 veya SQLAlchemy == 1.3.6 // vb.

Fikir, daha sonra size yetişeceği için python sürümünüzü düşürmek zorunda değilsiniz. Paketleri Python 3.8 ile uyumlu daha geç olanlara güncelleyin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.