AttributeError: module 'time' has no attribute 'clock' in Python 3.8

前端 未结 6 1773
悲哀的现实
悲哀的现实 2020-11-30 12:11

I have written code to generate public and private keys. It works great at Python 3.7 but it fails in Python 3.8. I don\'t know how it fails in the latest version. Help me w

相关标签:
6条回答
  • 2020-11-30 12:38

    From the Python 3.8 doc:

    The function time.clock() has been removed, after having been deprecated since Python 3.3: use time.perf_counter() or time.process_time() instead, depending on your requirements, to have well-defined behavior. (Contributed by Matthias Bussonnier in bpo-36895.)

    0 讨论(0)
  • 2020-11-30 12:48

    The module you use to generate key call a method that have been depreciated since python 3.3 time.clock().

    You could downgrade to python 3.7 or change the source code to replace it. You should open an issue for that as well.

    0 讨论(0)
  • 2020-11-30 12:51
    AttributeError: module 'time' has no attribute 'clock' 
    

    It is deprecated as said which means just use the latest versions of libraries that have that module. For example, depending on the dependency you have, Remove and Install

    Crypto==1.4.1, or Mako==1.1.2 or SQLAlchemy==1.3.6 //etc

    The idea is you don't have to downgrade your python version as this will catch up with you later. Just update the packages to more late ones which are compatible with Python 3.8

    0 讨论(0)
  • 2020-11-30 12:57

    Check if you are using PyCrypto, if yes, uninstall it and install PyCryptodome which is a fork of PyCrypto

    PyCrypto is dead as mentioned on project issue page

    Since both these libraries can coexist, it could be an issue too

    pip3 uninstall PyCrypto
    pip3 install -U PyCryptodome
    
    0 讨论(0)
  • 2020-11-30 12:59

    time.clock() was removed in 3.8 because it had platform-dependent behavior:

    • On Unix, this returns the current processor time (in seconds)

    • On Windows, this returns wall-clock time (in seconds)

      # I ran this test on my dual-boot system as demonstration:
      print(time.clock()); time.sleep(10); print(time.clock())
      # Linux:            # Windows:
      # 0.0382            # 26.1224
      # 0.0384            # 36.1566
      

    So which function to pick instead?

    • Processor Time: This is how long this specific process spends actively being executed on the CPU. Sleep, waiting for a web request, or time when only other processes are executed will not contribute to this.

      • Use time.process_time()
    • Wall-Clock Time: This refers to how much time has passed "on a clock hanging on the wall", i.e. outside real time.

      • Use time.perf_counter()

        • time.time() also measures wall-clock time but can be reset, so you could go back in time
        • time.monotonic() cannot be reset (monotonic = only goes forward) but has lower precision than time.perf_counter()
    0 讨论(0)
  • 2020-11-30 12:59

    Go to the the code C:\Users\Mr\anaconda3\envs\pythonProject2\Lib\site-packages\sqlalchemy\util and select compat.py and search for time.clock in code.

    Then replace time.clock with time.time and save it.

    0 讨论(0)
提交回复
热议问题