Python-Modul und __all__

Ich versuche zu verstehen, wie man Modul mit __all zu verwalten. Zum Beispiel habe ich folgenden strukturierten Code:

 main.py |=> /database |=> __init__.py |=> engine (with variables engine, session, etc.) 

Jetzt möchte ich in der Lage sein, session und engine Instanzen direkt aus dem database zu importieren wie:

 from database import session 

Ich habe versucht, Zeile hinzuzufügen __all__ = ['session'] oder __all__ = ['engine.session'] zu __init__py aber wenn ich versuche zu importieren Ich habe eine Ausnahme AttributeError: 'modile' object has not attribute 'engine.session'

Gibt es eine Möglichkeit, das gewünschte Verhalten zu erreichen?

One Solution collect form web for “Python-Modul und __all__”

Listing Namen in __all__ nicht von selbst importieren Elemente in ein Modul. Alles, was es tut, sind Listennamen, die von diesem Modul importiert werden sollen, wenn Sie from database import * Syntax verwendet haben.

session in database/__init__.py :

 from .engine import session 
  • Gibt es eine Python-Äquivalent zu Perls Daten :: Dumper?
  • Wie benutzt man importlib, um Module aus beliebigen Quellen zu importieren?
  • Wie greife ich von den anderen Modulen auf die Attribute des aktuellen Ausführungsmoduls zu?
  • Wie man Python Callbacks mit Fortran mit Modulen aussetzt
  • Ist es möglich, Python nativ zu kompilieren (jenseits von pytes Byte-Code)?
  • Importieren von Modulen auf tragbare Pythonschlange
  • Vollständig qualifizierter Name eines Python-Moduls
  • Wie kompiliere ich mehrere py-Dateien als eins?
  • Laden von Umgebungsmodulen innerhalb eines Python-Skripts
  • Py2exe - "Die folgenden Module fehlen"
  • Python: Installieren Sie ein Modul aus dem Quellcode
  • Python ist die beste Programmiersprache der Welt.