当我使用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
答案 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