Wie kann ich eine beliebige Python-Quelldatei (deren Dateiname beliebige Zeichen enthalten kann und nicht immer mit endet .py) in Python 3.3+ importieren ?
Ich habe imp.load_modulewie folgt verwendet:
>>> import imp
>>> path = '/tmp/a-b.txt'
>>> with open(path, 'U') as f:
... mod = imp.load_module('a_b', f, path, ('.py', 'U', imp.PY_SOURCE))
...
>>> mod
<module 'a_b' from '/tmp/a-b.txt'>
Es funktioniert immer noch in Python 3.3, ist aber laut imp.load_moduleDokumentation veraltet:
Veraltet seit Version 3.3 : Nicht erforderlich, da Loader zum Laden von Modulen verwendet werden sollten und find_module () veraltet ist.
In der impModuldokumentation wird empfohlen, Folgendes zu verwenden importlib:
Hinweis Neue Programme sollten importlib anstelle dieses Moduls verwenden.
Was ist der richtige Weg, um eine beliebige Python-Quelldatei in Python 3.3+ zu laden, ohne die veraltete imp.load_moduleFunktion zu verwenden?
imp.load_module()über eine direkte Importanweisung verwendet werden. Erwarten Sie, das Modul später nach Namen zu importieren (z. B.import a_b)? Interessiert es Sie, dass bei diesem Ansatz keine benutzerdefinierten Importeure verwendet werden? Erwarten Sie, dass das Modul über alle Funktionen verfügt (z. B. definieren__name__und__loader__)?