我有以下文件夹结构:
├── aaa
│ ├── __init__.py
│ ├── ttt
│ │ ├── aaa.py
│ │ └── __init__.py
│ └── ttt.py
├── __init__.py
├── t.py
└── ttt.py
主脚本 t.py :
import sys
sys.path = ['.']
import ttt
import aaa.ttt
import aaa.ttt.aaa
print(ttt.get_name())
print(aaa.ttt.get_name2())
print(aaa.ttt.aaa.get_name3())
导入的脚本:
./ ttt.py
def get_name():
return "ttt"
./ AAA / ttt.py
def get_name2():
return "aaa/ttt"
./ AAA / TTT / AAA / ttt.py
def get_name3():
return "aaa/ttt/aaa"
现在运行主脚本:
$ python -B t.py
ttt
Traceback (most recent call last):
File "t.py", line 10, in <module>
print(aaa.ttt.get_name2())
AttributeError: module 'aaa.ttt' has no attribute 'get_name2'
这是什么问题?我使用的是Python 3.6.1。
修改
正如@AChampion评论的那样,我遇到了一个问题
aaa/ttt.py
和aaa/ttt/__init__.py
。但是,如果删除后者,我会在ModuleNotFoundError
上获得import aaa.ttt.aaa
:
$ python -B t.py
Traceback (most recent call last):
File "t.py", line 7, in <module>
import aaa.ttt.aaa
ModuleNotFoundError: No module named 'aaa.ttt.aaa'; 'aaa.ttt' is not a package
这是否意味着如果您在Python中有一个包aaa.bbb
,那么您不能在名为aaa
的包bbb
中包含任何模块?这闻起来很糟糕,所以我想我必须在这里遗漏一些东西?