- 若 app 下有
app/__init__.py
文件,則此 app 被視做一個 package,而 app 下的其餘文件/文件夾被視做 module - 咱們知道,package 的意義是做爲一個總體,提供某些功能。所以,package 內部的各個 module 之間使用相對路徑導入。
- 好比:在 module1.py 內,這樣相對導入:
from .module2 import myClass2
- 注意,問題來了,此時不能之間運行 module.py 這個文件,不然會報錯:SystemError: Parent module '' not loaded, cannot perform relative import
- 咱們只能在package外,也就是文件夾 app 外的 run.py文件中導入:
from app.module2 import myClass2
代碼實現:
# add the model path to sys.path import sys import os current_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) ROOT_PATH = os.path.join(current_path, '..') sys.path.append(ROOT_PATH) # print(current_path) # print(ROOT_PATH) # /Users/zoe/dcba/service/.. from service.tms import tms #供參考
這樣寫就能夠啦!不管是本地文件服務仍是項目服務,均可以正常地運行了。注意,因此涉及的相關組件都要這樣哦!blog