目錄結構
- 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