我的Python模块有以下结构:
.
├── a
│ ├── __init__.py
│ ├── aa.py
│ └── b
│ ├── __init__.py
│ └── bb.py
└── root.py
from b.bb import hello_bb
def hello_aa():
hello_bb()
print("hello from aa.py")
def hello_bb():
print("hello from bb.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
都是空的。
我缺少其他任何可以使这项工作的东西?
答案 0 :(得分:2)
在包中使用relative import(请参阅PEP 328)
from .b.bb import hello_bb
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")