¿La función imp.reload () de Python no funciona?

Aquí hay un ejemplo conciso:

x.py:

class x: var = 'from x.py' 

y.py:

 class x: var = 'from y.py' 

test.py

 import imp def write_module(filename): fp = open('z.py', 'w') fp.write(open(filename).read()) fp.close() write_module('x.py') import z print(zxvar) # Prints 'from x.py' write_module('y.py') imp.reload(z) print(zxvar) # Prints 'from x.py' 

No estoy seguro de por qué ambas declaraciones impresas son iguales. ¿Cómo puedo hacer que Python use la nueva definición de clase x después de reload ()?

Esto sucede porque las fechas de creación del archivo (de z.py y su contraparte comstackda z.pyc ) son idénticas, por lo que Python piensa que el archivo no ha cambiado y no lo vuelve a comstackr.

En realidad, cuando intenté y reintenté su código, una vez funcionó como se esperaba, probablemente porque los dos archivos se crearon a ambos lados del segundo cambio del reloj del sistema.

 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(zxvar) # Prints 'from x.py' time.sleep(1) # Wait one second write_module('y.py') imp.reload(z) print(zxvar) # Prints 'from y.py' 

Muestra el resultado esperado.