capypad
0 Tage Serie
python / expert
Snippet

Abfangen von Modul-Imports mit Meta Path Findern

Das Python-Import-System kann durch Hinzufügen von Findern zu sys.meta_path angepasst werden. Dies ermöglicht es, jeden Import-Versuch abzufangen, was fortgeschrittene Muster wie Hot-Reloading, Laden von Remote-Modulen oder automatisierte Instrumentierung für Sicherheitsaudits ermöglicht.

snippet.py
python
1
2
3
4
5
6
7
8
9
import sys
from importlib.abc import MetaPathFinder
 
class DebugFinder(MetaPathFinder):
def find_spec(self, fullname, path, target=None):
print(f"Attempting to import: {fullname}")
return None
 
sys.meta_path.insert(0, DebugFinder())
Erklärung
1
class DebugFinder(MetaPathFinder):
Erbt von der abstrakten Basisklasse, um eine benutzerdefinierte Modul-Suchstrategie zu definieren.
2
sys.meta_path.insert(0, DebugFinder())
Platziert den benutzerdefinierten Finder mit höchster Priorität in der Import-Auflösungsreihenfolge.