python中如何import不同层级的模块

python引入模块的几种情况

同一目录

1
2
3
-- src
|-- main.py
|-- model.py

main.py为主文件,model.py是我们要引入的文件,则直接import modelfrom model import *即可。

要引入的模块位于与主程序同级的目录下

1
2
3
4
5
6
-- src
|-- model1.py
|-- lib
| -- (__init__.py -->新建空文件)
| -- model2.py
|-- main.py

要在程序 main.py 中导入模块 model2.py, 需要在lib文件夹中建立空文件 __init__.py 文件(也可以在该文件中自定义输出模块接口); 然后使用 from lib.model2 import *import lib.model2

要引入的模块位于主程序上层目录的其他目录(平级)下

1
2
3
4
5
6
7
-- src
|-- model1.py
|-- lib
| -- (__init__.py -->新建空文件)
| -- model2.py
|-- sub
| -- main.py

这里想要实现main.py调用model1.pymodel2.py ,做法是我们先跳到src目录下面,直接可以调用mod1,然后在lib上当下建一个空文件__init__.py ,就可以像第二步调用子目录下的模块一样,通过import lib.model2进行调用了。具体代码如下:

1
2
3
4
import sys
sys.path.append("..")
import model1
import lib.model2

当然,如何你不想新建__init.py__文件,则可以尝试如下的方法

1
2
3
4
import os
import sys
sys.path.append(os.path.abspath('..')+'/lib')
from model2 import *

参考:python 在不同层级目录import 模块的方法