import导入文件路径注意点

目录结构

 - 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

posted @ 2024-11-07 19:17  up_bach  阅读(28)  评论(0)    收藏  举报