importlib.reload在脚本中执行失败

2020年6月3日 / 54次阅读 / 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条留言

    电子邮件地址不会被公开。 必填项已用*标注

    • 麦新杰

      还是以后找时间慢慢看python lib源码吧。。 [回复]

    • 麦新杰

      【在交互式的Python解释器中reload新符号】一个小技巧,在交互式的python解释器中reload模块,一般不能引入新的符号;如果我们先删除此模块对应pyc文件,在importlib.reload,就可以引入新的符号了! [回复]


    前一篇:
    后一篇:

    More


    ©Copyright 麦新杰 Since 2019 Python笔记

    go to top