在python中重新加载模块

时间:2012-10-30 12:33:26

标签: python module reload

当我使用MyClass字典从文件myModule.py导入课程myModules时,我会这样做

from myModules.myModule import MyClass

如何在对文件myModue.py进行更改后重新加载此模块?以下是一些不当行为:

reload(MyClass) # TypeError: reload() argument must be module
reload(myModule) # NameError: name 'myModule' is not defined
reload(myModules.myModule)  # NameError: name 'myModules' is not defined

1 个答案:

答案 0 :(得分:3)

您必须有一个模块才能重新加载。当你使用from foo import bar时,除非bar是一个模块(看起来它不是,在你的情况下),你将不得不使用另一个import语句。

from myModules.myModule import myClass
# this will cause myModule.py to be evaluated.  only myClass is in scope

from myModules import myModule
# since myModule has already been imported, myModule.py is not evaluated again. 
# but now myModule is in scope.

reload(myModule)
# this will cause myModule.py to be evaluated again.

如果出于某种原因,您不想要两次导入,那么也可以在sys.modules

中找到已导入的模块