根据完整路径动态导入模块
在 Python 中,可以在不事先知道模块名称的情况下导入模块,但只能导入模块它的完整路径。此功能在模块位于不同目录中或动态生成模块名称的情况下非常有用。
解决方案
动态导入模块有多种方法基于其完整路径:
Python 3.5 :
import importlib.util import sys # Define the full path to the module module_path = "/path/to/module.py" # Create a specification for the module spec = importlib.util.spec_from_file_location("module_name", module_path) # Create the module from the specification foo = importlib.util.module_from_spec(spec) # Add the module to the list of imported modules sys.modules["module_name"] = foo # Execute the module's code spec.loader.exec_module(foo) # Access a class from the imported module foo.MyClass()
Python 3.3 和 3.4:
from importlib.machinery import SourceFileLoader # Define the full path to the module module_path = "/path/to/module.py" # Create a SourceFileLoader object foo = SourceFileLoader("module_name", module_path).load_module() # Access a class from the imported module foo.MyClass()
Python 2:
import imp # Define the full path to the module module_path = "/path/to/module.py" # Import the module using imp.load_source() foo = imp.load_source('module_name', module_path) # Access a class from the imported module foo.MyClass()
请注意,这些不是唯一的选项,根据情况,可能还可以使用其他方法根据您的具体需求和 Python 版本。
以上是如何使用完整路径动态导入Python模块?的详细内容。更多信息请关注PHP中文网其他相关文章!