Python's imp.reload() function is not working?

前端 未结 1 1360
野趣味
野趣味 2021-01-17 15:19

Here\'s a concise example:

x.py:

class x:
  var = \'from x.py\'

y.py:

class x:
  var = \'from y.py\'
1条回答
  •  栀梦
    栀梦 (楼主)
    2021-01-17 15:50

    This happens because the file creation dates (of z.py and its compiled counterpart z.pyc) are identical, so Python thinks that the file is unchanged and doesn't recompile it.

    Actually, when I was trying and re-trying your code, it once worked as expected - probably because the two files happened to be created on either side of the system clock's second-changeover.

    import imp
    import time
    def write_module(filename):
      fp = open('z.py', 'w')
      fp.write(open(filename).read())
      fp.close()
    
    write_module('x.py')
    import z
    print(z.x.var) # Prints 'from x.py'
    time.sleep(1)  # Wait one second
    write_module('y.py')
    imp.reload(z)
    print(z.x.var) # Prints 'from y.py'
    

    shows the expected result.

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