我正在使用from app import sub
加载python(2.7.10)中的子模块,其中sub
具有config
变量。所以我可以运行print sub.config
并查看一堆配置变量。不是超级复杂。
如果我更改脚本中的配置变量,必须有一种方法来重新加载模块并查看更改。我找到了一些说明reload(app.sub)
可行的说明,但我收到错误:
NameError: name 'app' is not defined
如果我只做reload(sub)
,则错误是:
TypeError: reload() argument must be module
如果我import app
,我可以使用print app.sub.config
查看配置,然后使用reload(app)
重新加载
- 如果我执行import app
然后运行
我找到了自动重新加载的说明: Reloading submodules in IPython
但是无法手动重新加载子模块吗?
答案 0 :(得分:1)
当您from foo import bar
时,您的命名空间中现在有一个名为bar
的模块对象,因此您可以
from foo import bar
bar.do_the_thing() # or whatever
reload(bar)
如果您想了解更多有关不同导入表单工作方式的详细信息,我个人认为this answer对我自己特别有帮助。
答案 1 :(得分:0)
使用python3,我尝试这样做:
import importlib
import sys
def m_reload():
for k,v in sys.modules.items():
if k.startswith('your-package-name'):
importlib.reload(v)