我知道可以做到,但是我不记得怎么做。
如何在python中重新导入模块?场景如下:我以交互方式导入模块并对其进行修改,但随后遇到错误。我修复了.py文件中的错误,然后想重新导入固定模块而不退出python。我该怎么做 ?
这应该工作:
reload(my.module)
来自Python文档
重新加载先前导入的模块。该参数必须是模块对象,因此它必须已经成功导入。如果您已使用外部编辑器编辑了模块源文件,并且想在不离开Python解释器的情况下尝试新版本,则这将非常有用。
如果运行Python 3.4及更高版本,请执行import importlib,然后执行importlib.reload(nameOfModule)。
import importlib
importlib.reload(nameOfModule)
不要忘记使用此方法的注意事项:
重新加载模块时,将保留其字典(包含模块的全局变量)。名称的重新定义将覆盖旧的定义,因此这通常不成问题,但是,如果模块的新版本未定义旧版本所定义的名称,则不会删除旧定义。
如果一个模块使用导入了另一个模块的对象from ... import ...,则调用reload()另一个模块的操作并未重新定义从该模块导入的对象-解决该问题的一种方法是重新执行该from语句,另一种方法是使用import和限定名称(module.*name*)。
from ... import ...
reload()
from
import
module.*name*
如果模块实例化一个类的实例,则重新加载定义该类的模块不会影响实例的方法定义-它们将继续使用旧的类定义。派生类也是如此。