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