在 Python 中从完整文件路径导入模块
Najwa Riyaz
2023年1月30日
Python
Python Import
要从给定路径导入 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
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe