AttributeError: modul 'waktu' tidak memiliki atribut 'jam' di Python 3.8

23

Saya telah menulis kode untuk menghasilkan kunci publik dan pribadi. Ini berfungsi dengan baik di Python 3.7 tetapi gagal dalam Python 3.8. Saya tidak tahu bagaimana itu gagal di versi terbaru. Bantu saya dengan beberapa solusi.

Inilah Kode:

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)

Kesalahan dalam versi Python 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'
Menampar alfa
sumber
direferensikan di sini di lib Crytpo: github.com/dlitz/pycrypto/issues/283 Tapi tiket tampaknya tidak ditutup sejak cukup setahun.
Fabien Antoine

Jawaban:

22

Dari Python 3.8 doc :

Fungsi time.clock()telah dihapus, setelah tidak digunakan lagi sejak Python 3.3: digunakan time.perf_counter()atau time.process_time()sebagai gantinya, tergantung pada kebutuhan Anda, untuk memiliki perilaku yang terdefinisi dengan baik. (Dikontribusikan oleh Matthias Bussonnier di bpo-36895 .)

Angus Tay
sumber
1

Modul yang Anda gunakan untuk menghasilkan panggilan kunci metode yang telah disusutkan sejak python 3.3 time.clock () .

Anda bisa menurunkan versi ke python 3.7 atau mengubah kode sumber untuk menggantinya. Anda harus membuka masalah untuk itu juga.

Florian Bernard
sumber
0
AttributeError: module 'time' has no attribute 'clock' 

Itu ditinggalkan seperti yang dikatakan yang berarti hanya menggunakan versi terbaru dari perpustakaan yang memiliki modul itu. Misalnya, tergantung pada ketergantungan yang Anda miliki, Hapus dan Instal

Crypto == 1.4.1, atau Mako == 1.1.2 atau SQLAlchemy == 1.3.6 // dll

Idenya adalah Anda tidak perlu menurunkan versi python Anda karena ini akan menyusul Anda nanti. Cukup perbarui paket ke yang lebih baru yang kompatibel dengan Python 3.8

joash
sumber