我有一个与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
命令,同时仍然可以在单独的文件中编写兄弟函数。
答案 0 :(得分:3)
让__init__.py
重新加载导入时导入的文件:
import file1
import file2
reload(file1)
reload(file2)
func1, func2 = file1.func1, file1.func2
func3 = file2.func3
那就是说,依靠reload()
通常是一个坏主意,如果你可以避免它。