小编典典

在交互时重新导入python中的模块

all

我知道可以做到,但我不记得怎么做。

如何在 python 中重新导入模块?场景如下:我以交互方式导入一个模块并对其进行修改,但随后我遇到了错误。我修复了 .py 文件中的错误,然后我想在不退出
python 的情况下重新导入修复的模块。我该怎么做 ?


阅读 121

收藏
2022-03-13

共1个答案

小编典典

对于 Python 3.4+

import importlib
importlib.reload(nameOfModule)

对于 Python < 3.4

reload(my.module)

来自Python 文档

重新加载以前导入的模块。参数必须是一个模块对象,所以它必须之前已经成功导入。如果您使用外部编辑器编辑了模块源文件并且想要在不离开 Python
解释器的情况下试用新版本,这将非常有用。

不要忘记使用此方法的注意事项:

  • 当一个模块被重新加载时,它的字典(包含模块的全局变量)被保留。重新定义名称会覆盖旧定义,因此这通常不是问题,但如果模块的新版本没有定义旧版本定义的名称,则不会删除旧定义。

  • 如果一个模块使用 来从另一个模块导入对象from ... import ...,则调用reload()另一个模块不会重新定义从它导入的对象——解决此问题的一种方法是重新执行from语句,另一种方法是使用import和限定名称 ( module.*name*)。

  • 如果一个模块实例化了一个类的实例,重新加载定义该类的模块不会影响实例的方法定义——它们继续使用旧的类定义。派生类也是如此。

2022-03-13