让我们面对现实吧,更改后重新加载 python 代码的整个过程一团糟。不久前我发现调用 import <module>
口译员优于from <module> import <class/function>
, 因为这样我就可以调用 reload(module)
获取更新的代码。
但我现在有更复杂的问题。所以我有这个文件,module1.py,在顶部它说:
from module2 import <class1>, <function1>, etc.
然后我去更改 module2 中的代码。结果是调用 reload(module1)
不会重新加载模块 2 中更改的代码,即使模块 2 中的代码是在模块 1 的顶部导入的。有什么方法可以在不重新启动解释器的情况下重新加载所有内容吗?
在有人讨论我关于风格的案例之前,我只想说:
- 我只打电话
reload
来自解释器,从不在事件代码中。这个问题与我何时测试新代码有关。 - 我从不调用
<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/