import sys
import os
import time
MODULE_NAME = "mycode"
def write_module(version):
with open(MODULE_NAME+".py", "w") as f:
f.write("def fun():"+os.linesep)
f.write(" print('Code version:',"+str(version)+")")
for i in range(5):
# WRITE A PYTHON FILE AUTOMATICALLY
write_module(i)
# IMPORT IT
if MODULE_NAME in sys.modules:
del sys.modules[MODULE_NAME]
# time.sleep(1) # <------------------------ WHY IS IT MANDATORY ????
module = __import__(MODULE_NAME)
fun = module.fun
# CALL IT
fun()
产生:
Code version: 0
Code version: 0
Code version: 0
Code version: 0
Code version: 0
我期望:
Code version: 0
Code version: 1
Code version: 2
Code version: 3
Code version: 4
我正在开发Python代码,自动编写Python代码。Python导入指令没有像我预期的那样工作。它看起来像一个异步回调。
我不知道为什么,添加time.sleep(1)
行可以纠正错误。
1条答案
按热度按时间nvbavucw1#
源字节缓存在__pycache__目录中。
_validate_timestamp_pyc
根据源上次修改时间(没有time.sleep(1)
时相同)和源大小对其进行验证。您可以在从
sys.modules
删除模块之前删除pyc文件。