ImportError:导入我自己的子包时没有名为''的模块

时间:2014-10-01 14:55:21

标签: python packages python-import

按照this SO answer中的说明,我创建了一个包含子包的Python包作为子文件夹,每个包含一个__init__.py文件(全部都是空的)。

  top_module
     __init__.py
     module_a.py
        sub_module
             __init__.py
             module_c.py

我可以导入顶级模块,但尝试导入子模块会产生ImportError

>>> import top_module
>>> import top_module.sub_module
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named sub_module

在iPython中,我可以自动填充top_model.向我显示module_a.py,但不是sub_module

按照this SO answer中的说明操作,但我得到:

>>> top_module.__file__
'top_module.pyc'

这不是非常有用。有趣的是,__package__给了我:

>>> print top_module.__package__
None

我可以这样做:

>>> import top_module
>>> import sub_module.module_c

那么为什么不import top_module.sub_module.module_c

2 个答案:

答案 0 :(得分:3)

我已经解决了我的问题(这是一个非常愚蠢的错误,我害怕。)

我将PYTHONPATH设置为

/path/to/top_module

并且正在做

import module_a

当然有效。但是试着做

import top_module.submodule

没有工作,因为PYTHONPATH没有&#34;知道&#34;关于top_module已经在 top_module

答案 1 :(得分:1)

尝试from sub_module.module_c import *

相关问题