Zugriff auf __init__.py-Variablen aus tieferen Teilen eines Pakets

8

Ich entschuldige mich für eine weitere __init__.py -Frage.

Ich habe folgende Paketstruktur:

%Vor%

In der obersten Ebene __init__.py definiere ich: USER='me' . Wenn ich import contrib von der Kommandozeile, dann kann ich auf contrib.USER zugreifen.

Nun möchte ich auf contrib.user von% connection.py zugreifen, aber ich kann es nicht tun.

Die oberste Ebene __init__.py wird aufgerufen, wenn ich from contrib.database import connection ausstelle, also erstellt Python wirklich den Parameter USER .

Die Frage ist also: wie Sie auf die Parameter und Variablen zugreifen, die in der obersten Ebene __init__.py von innerhalb der untergeordneten Elemente deklariert wurden.

Danke.

BEARBEITEN:

Ich weiß, dass Sie import contrib zu connection.py hinzufügen können, aber es scheint sich zu wiederholen, da es offensichtlich ist (falsch?), dass Sie connection.py bereits importiert haben, wenn Sie contrib benötigen.

    
Escualo 18.05.2010, 19:36
quelle

2 Antworten

12

Das Hinzufügen von import contrib zu connection.py ist der richtige Weg. Ja, das Modul contrib ist bereits importiert (Sie können es aus sys.modules herausfinden). Das Problem ist, dass in connection.py kein Verweis auf das Modul aus Ihrem Code vorhanden ist. Wenn Sie einen anderen Import durchführen, erhalten Sie die Referenz. Sie müssen sich keine Gedanken über zusätzliche Ladezeiten machen, da das Modul bereits geladen ist.

    
Wai Yip Tung 18.05.2010, 19:55
quelle
0

Sie müssen contrib in connection importieren. Verwenden Sie entweder einen relativen Import ( ..contrib ) oder einen absoluten Import.

    
Yann Ramin 18.05.2010 19:53
quelle

Tags und Links