6

假设我有一个名为mymodule. 在我的代码顶部,我有这个:

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)不再做任何事情,因为它不会重新加载通过 * 导入调用的任何内容。

有什么建议么?

4

2 回答 2

1

我不确定你为什么要这样做,但会假设你有你的理由。我认为这有效:

__init__.py:

import file1
reload(file1)
from file1 import *

显然你也可以导入 file2

于 2013-04-18T23:03:39.830 回答
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 时,我相信您的问题在这里得到了很好的回答。

于 2013-04-18T23:04:01.183 回答