2016-08-30 5 views
1

ich eine Bibliothek von Python-Modulen entwickelt, die ziemlich tief verschachtelt ist, zum Beispiel:Vordefinierte Modul Aliase in Python?

\MyTools 
    __init__.py 
    \HydroTools 
     __init__.py 
     \bin 
     \Code 
      __init__.py 
      hydro.py 
    \TerraTools 
     __init__.py 
     \bin 
     \Code 
      __init__.py 
      terra.py 

Gibt es eine Möglichkeit Aliase für die Module vor der Zeit zu definieren (vielleicht durch init Py modifizieren?) , so dass statt mit ...

from MyTools.HydroTools.Code import hydro 
from MyTools.TerraTools.Code import terra 

den Import ... ich könnte etwas sauberer machen wie

from MyTools import hydro, terra 
+2

Wenn Sie importieren 'hydro' und' terra' im '' MyTools' __init __ py', können sie dann von 'MyTools' importiert werden, wie Sie wollen. – FamousJameous

+1

Ja, in Ihrer obersten Ebene "__init __. Py" würden Sie die exakten Importe, die Sie jetzt verwenden, mit einem Punkt am Anfang hinzufügen: 'from .MyTools.HydroTools.Code import hydro 'dann ist es aus dem Top-Level-Paket verfügbar. –

Antwort

3

Sie möchten diese verschachtelten Pakete über Ihren Modul-Namespace schieben.

In MyTools/__init__.py add:.

from .HydroTools.Code import hydro 
from .TerraTools.Code import terra