Python: import jedes Modul aus einem Ordner?
Was wäre die beste (lies: sauberste) Weg, zu sagen, Python zu importieren, alle Module aus einem Ordner?
Möchte ich Menschen ermöglichen, sich mit Ihren "mods" (Module) in einem Ordner in meiner app, die meinen code überprüfen sollte, auf jedem Start-und import jedem Modul setzen.
Ich auch nicht wollen, eine zusätzliche Rahmen Hinzugefügt, um das importierte Zeug (nicht "myfolder".mymodule.etwas", sondern "etwas")
- mögliche Duplikate von Laden Sie alle Module in einen Ordner in Python
- Prüfen Sie, einen ähnlichen thread und seine Antwort hier: stackoverflow.com/questions/279237/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn die Umwandlung den Ordner selbst in einem Modul durch die Verwendung eines
__init__.py
Datei, und verwendenfrom <foldername> import *
zu Ihnen passt, können Sie Durchlaufen Sie die Ordner-Inhaltemit "os.listdir" oder "glob.glob", und importieren Sie jede Datei mit der Endung ".py" mit der
__import__
built-in-Funktion:Der Vorteil dieses Ansatzes ist: es erlaubt Ihnen, dynamisch übergeben Sie den Namen der module zu
__import__
- während die ìmport Aussage muss die Modul-Namen, um auch hardcoded werden, und es erlaubt Ihnen zu überprüfen, andere Dinge über die Dateien - vielleicht Größe, oder, wenn Sie importieren, bestimmte erforderlichen Module, bevor Sie diese importieren.import importlib; importlib.import_module("plugins" + "." + module)
__import__
. Die Funktion funktioniert immer noch als gut, man muss nur zu verwenden,".", anstatt zuos.path.join
Erstellen Sie eine Datei namens
in den Ordner und importieren Sie den Ordner-Namen wie diese:
Möchten Sie vielleicht versuchen, dass Projekt: https://gitlab.com/aurelien-lourot/importdir
Mit diesem Modul, Sie müssen nur schreiben zwei Zeilen zu importieren, alle plugins aus dem Verzeichnis, und Sie brauchen nicht eine zusätzliche
__init__.py
(oder anderen extra-Datei):