Python Import:如何引入不同資料夾的 Py 檔案(完整教學)
在開發程式專案的時候常常會將不同的功能進行模組化,讓程式容易維護以及在其他專案使用。
引入模組py檔除了可以將要引入的py檔與執行程式放在同一個資料夾中,另外筆者找資料的時候發現可以引入不同資料夾中的py檔就不用侷限在同一個資料夾中,因此紀錄一下。
import importlib.util
#套件載入importlib.util 可以用來動態載入模組,可以載入指定路徑下的python模組。
spec = importlib.util.spec_from_file_location("module", "/path/to/folder/module.py")
#建立了一個模組規格(module specification,簡稱 spec),用來描述如何從指定的 .py 檔案載入模組。
#"module":這是模組的名稱,這裡設定為 "module",但這個名稱不一定要與檔名相同,這只是 Python 內部識別這個模組的名稱。
module = importlib.util.module_from_spec(spec)
#這行使用 spec 建立一個新的模組物件 module,但此時模組的程式碼還未執行(即模組內的變數與函式還未載入)。
#此時,module 變數已經存在,但如果你嘗試呼叫 module.some_function(),會發生錯誤,因為模組還沒有被執行。
spec.loader.exec_module(module)
#這行執行 module.py 內的程式碼,讓模組的內容被正式載入。
#執行完這行之後,module 物件就具備了 module.py 內定義的函式與變數,現在可以正常存取它們。
module.some_function()
#這行呼叫 module 物件內定義的 some_function() 函式。