重新导入更新的模块到python

时间:2013-10-26 17:58:15

标签: reload

我在python3中有以下场景

from phase_2d import phase_2d #where phase_2d是python文件phase_2d.py

然后我编辑这个文件并想测试更改,而不必退出python并重新加载所有内容。

imp.reload(phase_2d)

返回错误'Type:Error:reload()参数必须是模块'

1 个答案:

答案 0 :(得分:0)

由于您从模块phase_2d导入了phase_2d类,因此在调用imp.reload(phase_2d)时,传递给reload命令的phase_2d是类,而不是模块。要使用reload命令,必须导入实际模块,否则获取对模块的引用。例如,你可以这样做:

import phase_2d
from phase_2d import phase_2d as p2d
...
imp.reload(phase_2d)

或者,如果您真的只想从模块中导入单个类,则可以使用inspect模块从类中获取父模块(http://docs.python.org/2/library/inspect.html#inspect.getmodule

import inspect
from phase_2d import phase_2d
....
imp.reload(inspect.getmodule(phase_2d))