在 Python 中從完整檔案路徑匯入模組
Najwa Riyaz
2023年1月30日
2021年7月9日
要從給定路徑匯入 Python 檔案,請使用基於 Python 版本的 Python 庫。這篇文章解釋瞭如何在給定模組的完整路徑的情況下在 Python 中匯入模組。
使用以下基於 Python 版本的庫函式來匯入模組。
- 對於 Python 3.5+,匯入
importlib.util
。 - 對於 Python 3.3 和 3.4,匯入
importlib.machinery
、SourceFileLoader
。 - 對於 Python 2,匯入
imp
。
在我們開始之前,請準備好檔案設定以演示示例。
- 在
addmodule.py
檔案中提及以下程式碼。
def printingstatement():
print("From addmodule.py")
- 將
addmodule.py
放在一個資料夾中。在下面的示例中,它位於c:\\Users\\Rexjohn\\Folder-1\\
中。
在 Python 3.5+ 中匯入具有完整檔案路徑的模組
對於 Python 3.5+,使用 importlib.util
庫的函式來匯入模組:
import importlib.util
MODULE_PATH = "c:\\Users\\Rexjohn\\Folder-1\\addmodule.py"
MODULE_NAME = "addmodule"
spec = importlib.util.spec_from_file_location(MODULE_NAME, MODULE_PATH)
modulevar = importlib.util.module_from_spec(spec)
spec.loader.exec_module(modulevar)
modulevar.printingstatement()
在這裡,使用 importlib.util
庫中的以下函式。
spec_from_file_location(MODULE_NAME, MODULE_PATH)
。請在MODULE_PATH
中提及模組名稱MODULE_NAME
的完整檔案路徑。module_from_spec(spec)
exec_module(modulevar)
輸出:
From addmodule.py
在 Python 3.3 和 3.4 中匯入具有完整檔案路徑的模組
如果你使用 Python 3.3 和 3.4,你可以使用 importlib.machinery
、SourceFileLoader
庫的函式來匯入模組:
from importlib.machinery import SourceFileLoader
MODULE_PATH = "c:\\Users\\Rexjohn\\Folder-1\\addmodule.py"
MODULE_NAME = "addmodule"
modulevar = SourceFileLoader(MODULE_NAME, MODULE_PATH).load_module()
modulevar.printingstatement()
在這裡,通過提及使用 importlib.machinery
、SourceFileLoader
庫中的以下函式。
SourceFileLoader(MODULE_NAME, MODULE_PATH).load_module()
輸出:
From addmodule.py
在 Python 2 中匯入具有完整檔案路徑的模組
對於 Python 2,使用 imp
庫的函式來匯入模組:
import imp
MODULE_PATH = "c:\\Users\\Rexjohn\\Folder-1\\addmodule.py"
MODULE_NAME = "addmodule"
modulevar = imp.load_source(MODULE_NAME, MODULE_PATH)
modulevar.printingstatement()
在這裡,使用 imp
庫中的以下函式。
load_source(MODULE_NAME, MODULE_PATH)
輸出:
From addmodule.py