来自python子模块的`ImportError`

时间:2017-09-08 21:00:09

标签: python python-3.x python-3.5

我的Python模块有以下结构:

.
├── a
│   ├── __init__.py
│   ├── aa.py
│   └── b
│       ├── __init__.py
│       └── bb.py
└── root.py

aa.py的内容

from b.bb import hello_bb

def hello_aa():
    hello_bb()
    print("hello from aa.py")

bb.py

的内容
def hello_bb():
    print("hello from bb.py")

root.py

的内容
from a.aa import hello_aa

hello_aa()

使用Python 3.5.1,执行python root.py会出现以下错误:

Traceback (most recent call last):
  File "root.py", line 1, in <module>
    from a.aa import hello_aa
  File ".../a/aa.py", line 1, in <module>
    from b.bb import hello_bb
ImportError: No module named 'b'

__init__.py都是空的。

我缺少其他任何可以使这项工作的东西?

2 个答案:

答案 0 :(得分:2)

在包中使用relative import(请参阅PEP 328

aa.py

from .b.bb import hello_bb

root.py

from .a.aa import hello_aa

答案 1 :(得分:0)

aa.py文件中,您必须导入hello_bb,如下所示:

from .b.bb import hello_bb

def hello_aa():
    hello_bb()
    print("hello from aa.py")