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_module
wie 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_module
Dokumentation veraltet:
Veraltet seit Version 3.3 : Nicht erforderlich, da Loader zum Laden von Modulen verwendet werden sollten und find_module () veraltet ist.
In der imp
Moduldokumentation 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_module
Funktion 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__
)?