假如我的项目层级结构如下,project
文件夹为项目根路径:
project/
├── first/
│ ├── __init__.py
│ ├── second/
│ │ ├── __init__.py
│ │ └── second_test.py
│ └── first_test.py
└── main.py
假设项目入口文件为main.py
,而first_test.py
有TestFirst
类,second_test.py
有TestSecond
类,那么现在需求如下:
main.py
中导入first_test.py
中的TestFirst
类first_test.py
中导入second_test.py
中的TestSecond
类main.py
的代码如下:
from first.first_test import TestFirst
TestFirst()
first_test.py
的代码如下:
from first.second.second_test import TestSecond
class TestFirst:
def __init__(self) -> None:
print('first_test.py')
TestSecond()
second_test.py
的代码如下:
class TestSecond:
def __init__(self) -> None:
print('second_test.py')
执行main.py
后得到如下结果:
second_test.py
first_test.py
通过上述例子可以发现,first_test.py
模块中导入second_test
模块的路径和main.py
导入first_test.py
模块的路径的起始模块都是first
。
说明我们在确定各个模块之间导入关系的起始模块是以入口文件(main.py
)为基准。