背景
最近在运用Django和pytest框架的时候,需要跨文件引用函数和类,现汇总各种场景下引用文件的方法。
直接跨文件引用
1.同一个文件夹两个不同文件间引用
-- src
|-- mod1.py
|-- mod2.py
文件mod2想要引用文件mod1内的函数/类:from .mod1 import *
PS.不使用框架的时候,可移除mod1前面的.
2.不同文件夹下跨文件引用
-- src
|-- mod1.py
|-- lib
| |-- mod2.py
|-- sub
| |-- mod3.py
文件mod1想要引用文件mod2内的函数/类:from ..lib.mod2 import *
文件mod2想要引用文件mod1内的函数/类
文件mod2想要引用文件mod3内的函数/类
-- src
|-- mod1.py
|-- lib
|-- sub1
| |-- mod2.py
|-- sub
| |-- mod3.py
文件mod1想要引用文件mod2内的函数/类
文件mod2想要引用文件mod1内的函数/类
文件mod2想要引用文件mod3内的函数/类
借助sys.path的方式引用
建议采用相对路径的方式,比绝对路径要更好,不会受限文件路径变更
相对路径的里面:.代表同一级;..代表上一级
以不同文件夹跨文件引用为例
文件mod2想要引用文件mod3内的函数/类:
需要在文件mod2头部增加如下代码
import sys
sys.path("..") //目前文件所在层级/src/lib/mod2,执行..后层级变更为/src/lib
from sub.mod3 import * //sub和lib是同一个层级,故可采用sub.mod3的方式查找到文件