在 Python 中从完整文件路径导入模块

  1. 在 Python 3.5+ 中导入具有完整文件路径的模块
  2. 在 Python 3.3 和 3.4 中导入具有完整文件路径的模块
  3. 在 Python 2 中导入具有完整文件路径的模块

要从给定路径导入 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

  • 在 Python 中从另一个文件导入变量
  • 在 Python 中从父目录导入模块