在 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