Wie zu tun, relative Importe in Python?

Vorstellen, diese Verzeichnisstruktur:

app/
   __init__.py
   sub1/
      __init__.py
      mod1.py
   sub2/
      __init__.py
      mod2.py

Ich bin Codierung mod1, und ich importieren müssen etwas aus mod2. Wie sollte ich es tun?

Versuchte ich from ..sub2 import mod2 aber ich bin immer ein "Versuch der relative import in nicht-Paket".

Googelte ich herum, fand aber nur "sys.path manipulation" hacks. Gibt es da nicht eine saubere Art und Weise?


Edit: alle meine __init__.py's sind derzeit leer

Edit2: ich bin versucht, das zu tun, weil sub2 enthält Klassen, die in sub-Pakete ( sub1 , subX usw.).

Edit3: Das Verhalten, das ich Suche, ist die gleiche wie im PEP 366 (Dank John B)

Ich empfehle die Aktualisierung Ihrer Frage zu machen, mehr klar, dass Sie beschreiben das Thema PEP 366.
Es ist eine langatmige Erklärung, aber prüfen Sie hier: stackoverflow.com/a/10713254/1267156, antwortete ich eine sehr ähnliche Frage. Ich hatte das gleiche problem, bis Letzte Nacht.
Für diejenigen, die wollen, um ein Modul laden befindet sich an einer beliebigen Pfad, siehe: stackoverflow.com/questions/67631/...
Auf einem verwandten beachten, Python 3 wird es ändern die Standard-Handhabung von Importen zu werden absolute standardmäßig; relative Importe müssen explizit angegeben werden.

InformationsquelleAutor Joril | 2008-09-16

Schreibe einen Kommentar