假如我的项目层级结构如下,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 TestFirstTestFirst()
first_test.py的代码如下:
from first.second.second_test import TestSecondclass 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)为基准。