2020年6月3日 / 291次阅读 / Last Modified 2020年9月11日
此问题已经解决,请参考:python热补丁机制
=========程序员的过往=========
记录一个问题,我想用importlib.reload在脚本中自动更新某个模块,但是没有成功,原因不详。
importlib.reload在交互式的解释器中执行是OK的,但是也只能reload已有的符号,模块中新增的符号没法reload。
代码如下:
moda = """
def test1():
print('test111')
"""
modb = """
def test1():
print('test222')
"""
with open('_test_reload.py', 'w') as f:
f.write(moda)
f.flush()
import _test_reload
_test_reload.test1()
with open('_test_reload.py', 'w') as f:
f.write(modb)
f.flush()
import importlib
a = importlib.reload(_test_reload)
a.test1()
预期执行效果是先打印test111,再打印test222。
但是两次打印出来的都是test111。
-- EOF --
本文链接:https://www.pynote.net/archives/2035
《importlib.reload在脚本中执行失败》有2条留言
©Copyright 麦新杰 Since 2019 Python笔记
还是以后找时间慢慢看python lib源码吧。。 [ ]
【在交互式的Python解释器中reload新符号】一个小技巧,在交互式的python解释器中reload模块,一般不能引入新的符号;如果我们先删除此模块对应pyc文件,再importlib.reload,就可以引入新的符号了! [ ]