Importer dynamiquement un module étant donné son chemin complet
En Python, il est possible d'importer un module sans connaître son nom à l'avance mais seulement son chemin complet. Cette fonctionnalité est utile dans les situations où les modules sont situés dans des répertoires différents ou lorsque le nom du module est généré dynamiquement.
Solution
Il existe plusieurs approches pour importer dynamiquement un module basé sur son chemin complet :
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 et 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()
Veuillez noter que ce ne sont pas les seules options et que d'autres méthodes peuvent être disponibles en fonction de vos besoins spécifiques et de Python. version.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!