__init__.py未检测到整个模块

时间:2017-08-19 17:48:13

标签: python python-2.7 module

我有一个相对较小的python程序,设置如下

Root
  --Network
    --DTO
      Lots of py files which contain classes.
  Other py files in the project

在网络和DTO文件夹中都有一个空的__init__.py

当我执行from Network import DTOimport NetworkImport Network.DTO时,根本无法使用该模块。调试器说它完全是空的。 root包含我实际执行的py文件。

网络和DTO文件夹中的__init__.py文件都编译为pyc,而所有实际的python文件都不是。

有谁知道我做错了什么?我正在使用python 2.7

1 个答案:

答案 0 :(得分:1)

为此,您需要导入__init__.py中的子模块。如果您有很多子模块,那么为每个子模块添加导入变得更加困难。对于许多子模块(通常),请使用__all__

以下是Root/Network/DTO/__init__.py的示例:

__all__ = [
    'sample_module',
    ...
]

for module in __all__:
    __import__('DTO.%s' % module)

现在你可以做from Network.DTO import sample_module。同样的想法也适用于你的其他模块。