2013-10-26 148 views
0

我在python3以下情形重新导入更新模块蟒蛇

from phase_2d import phase_2d #WHERE phase_2d是一个Python文件phase_2d.py

我然后编辑这个文件,并想测试的变化,而无需退出python并重新加载所有内容。

imp.reload(phase_2d) 

返回错误 '类型:错误:重载()的参数必须是模块'

回答

0

既然你从模块phase_2d进口phase_2d类,当你调用imp.reload(phase_2d),该phase_2d传递给reload命令的是类,而不是模块。为了使用reload命令,您必须导入实际模块,否则将获得对该模块的引用。例如,你可以做这样的事情:

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

或者,如果你真的只是想从模块导入单个类,你可以使用检查模块从类得到父模块(http://docs.python.org/2/library/inspect.html#inspect.getmodule

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