目录结构
- lib
- main.py
- package1
- subA.py
- subB.py
- package2
- subC.py
- subD.py
要在main文件中导入subA
# 方案1
- main.py
from package1 import subA
# 方案2
- main.py
from lib.package1 import subA
要在main文件中,通过subA导入subB
# 方案1
- main.py
from package1 import subA
- subA.py
# 需要通过修改路径信息的方法,将当前路径加入系统搜索路径
import sys
import os
# print(f'修改前的{sys.path = }')
current_dir = os.path.dirname(os.path.abspath(__file__))
parent_dir = os.path.abspath(os.path.join(current_dir, os.pardir))
sys.path.append(parent_dir)
# print(f'修改后的{sys.path = }')
form lib.package1 import subB
# 方案2
- main.py
from lib.package1 import subA
- subA.py
form . import subB
要在main文件中导入subC
# 方案1
- main.py
from package1 import subA
- subA.py
# 需要通过修改路径信息的方法,将当前路径加入系统搜索路径
import sys
import os
# print(f'修改前的{sys.path = }')
current_dir = os.path.dirname(os.path.abspath(__file__))
parent_dir = os.path.abspath(os.path.join(current_dir, os.pardir))
sys.path.append(parent_dir)
# print(f'修改后的{sys.path = }')
form lib.package2 import subC
# 方案2
- main.py
from lib.package1 import subA
- subA.py
form ..package2 import subC
两种方案比较
方案1
需要系统文件操作,较复杂。
通过系统操作获得的绝对路径,适用性更强,而且可以通过直接运行subA,实现导入subBsubC
方案2
在主程序的导包路径中添加根目录,操作简答。
采用相对路径,操作较简便,未验证使用性,而且无法通过直接运行subA,实现导入subBsubC