python - 重新加载已导入到另一个模块的模块

标签 python import module reload

让我们面对现实吧,更改后重新加载 python 代码的整个过程一团糟。不久前我发现调用 import <module>口译员优于from <module> import <class/function> , 因为这样我就可以调用 reload(module)获取更新的代码。

但我现在有更复杂的问题。所以我有这个文件,module1.py,在顶部它说:

from module2 import <class1>, <function1>, etc.

然后我去更改 module2 中的代码。结果是调用 reload(module1)不会重新加载模块 2 中更改的代码,即使模块 2 中的代码是在模块 1 的顶部导入的。有什么方法可以在不重新启动解释器的情况下重新加载所有内容吗?

在有人讨论我关于风格的案例之前,我只想说:

  1. 我只打电话reload来自解释器,从不在事件代码中。这个问题与我何时测试新代码有关。
  2. 我从不调用 <module> import * , 我知道这会破坏可读性

最佳答案

看看 IPython。它有 autoreload在调用函数之前在解释器 session 期间自动重新加载模块的扩展。我引用着陆页中的示例:

In [1]: %load_ext autoreload

In [2]: %autoreload 2

In [3]: from foo import some_function

In [4]: some_function()
Out[4]: 42

In [5]: # open foo.py in an editor and change some_function to return 43

In [6]: some_function()
Out[6]: 43

关于python - 重新加载已导入到另一个模块的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14015405/

相关文章:

c - Fortran 模块与在 C 中访问的过程相结合,反之亦然

python - *** key 错误 : 'font-family' on replacing a html string into another html string

python - 对 0D 和 1D numpy 数组使用数组索引的统一方式

java - 使用python子进程运行javaw.exe

java - 如何在jsp代码中导入java库?

mysql - 如何将现有用户表导入另一个具有不同结构的表?

python - 我收到错误消息,因为o​​jit_prehh对象没有属性 'QuerySet',这是什么意思,以及如何解决?

r - 使用ff包导入文本文件

javascript - 将模块隐藏在闭包中的原因是什么?

python - Pycharm 中没有名为 'pandas' 的模块