Python:通过多个文件定义模块

时间:2013-04-18 22:24:16

标签: python python-2.7

假设我有一个名为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的内容。

有什么建议吗?

2 个答案:

答案 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