在 Python 中從完整檔案路徑匯入模組

Najwa Riyaz 2023年1月30日 2021年7月9日
  1. 在 Python 3.5+ 中匯入具有完整檔案路徑的模組
  2. 在 Python 3.3 和 3.4 中匯入具有完整檔案路徑的模組
  3. 在 Python 2 中匯入具有完整檔案路徑的模組
在 Python 中從完整檔案路徑匯入模組

要從給定路徑匯入 Python 檔案,請使用基於 Python 版本的 Python 庫。這篇文章解釋瞭如何在給定模組的完整路徑的情況下在 Python 中匯入模組。

使用以下基於 Python 版本的庫函式來匯入模組。

  1. 對於 Python 3.5+,匯入 importlib.util
  2. 對於 Python 3.3 和 3.4,匯入 importlib.machinerySourceFileLoader
  3. 對於 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.machinerySourceFileLoader 庫的函式來匯入模組:

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.machinerySourceFileLoader 庫中的以下函式。

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

相關文章 - Python Import