假设我有一个名为mymodule
的python模块。在我的代码的顶部,我有这个:
import mymodule
reload(mymodule)
我的目录结构是
/dir/mymodule.py
但是,我想将mymodule.py
分成几个文件,同时仍被定义为单个模块(即我不想单独导入每个文件 - 我希望能够使用我的像以前一样导入/重新加载)。
我知道如何执行此操作的唯一方法是以下
/dir/mymodule/
file1.py
file2.py
__init__.py
__init__.py
包含
from file1 import *
from file2 import *
这大部分都有效,但我对reload(mymodule)
的调用不再做任何事情,因为它不会重新加载任何名为via * imports的内容。
有什么建议吗?
答案 0 :(得分:1)
我不确定你为什么要这样做,但会假设你有理由。我认为这有效:
__init__.py:
import file1
reload(file1)
from file1 import *
显然你也可以导入file2
答案 1 :(得分:1)
对于快速解决方法,我可以建议
import sys
def myreload(base_module_name):
for module_name, module in sys.modules.items():
if module_name.startswith(base_module_name):
reload(module)
myreload('mymodule')
这会调用reload(mymodule.file1)
,reload(mymodule.file2)
等。
然而,它不是递归的,因为你正在使用ipython,我相信你的静止得到了很好的回答here。