根據完整路徑動態導入模組
在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中文網其他相關文章!