1

我有一个与 scipy/numpy 结构相似的包,其中有几个主要的子模块,每个子模块都包含来自各种文件的函数,这些文件已被扁平化到同一个命名空间中。比方说

package/
  sub1/
    __init__.py
    file1.py
    file2.py

然后sub1/__init__.py看起来像这样:

from .file1 import func1, func2
from .file2 import func3

结果是我能做到

import package.sub1
package.sub1.func1()

但是,问题是以下不起作用:

>>> import package.sub1
-- change things in file1.py --
>>> reload(package.sub1)

该功能不更新。如果我这样做,它会起作用import package.sub1.file1,所以有一些东西会扁平化命名空间,这会导致它失去与模块的连接。我的主要问题是我如何仍然可以使用该reload命令,同时还能获得能够在单独的文件中编写同级函数的好处。

4

1 回答 1

3

__init__.py导入时重新加载它导入的文件:

import file1
import file2
reload(file1)
reload(file2)

func1, func2 = file1.func1, file1.func2
func3 = file2.func3

reload()也就是说,如果可以避免,依赖通常是一个坏主意。

于 2012-10-04T02:27:17.107 回答