Importieren von Lokalen Modulen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
brave
User
Beiträge: 24
Registriert: Mittwoch 24. Februar 2016, 18:30

Hallo,

ich verstehe schon wieder etwas mit den Pfaden nicht. Mir ist unbegreiflich, warum ich modules aus packages nicht lokal importieren kann.

Das vereinfachte Testcase Setup sieht so aus:
http://imgur.com/a/mYhSX

Ich möchte quasi im file settings.py wahlweise die production- oder die dev-settings importieren. Beide setting-setups teilen sich die settings aus base.py (angedeutet durch die GLOBAL-Variable) und sollen aber jeweils andere settings überschreiben (angedeutet durch die PATH-Variable).

Ich führe settings.py aus und erwarte, wenn prod.py in settings.py importiert wird, dass die Ausgabe

'Production Path'
'Another global'

ist. Genau das funktioniert, wenn ich alle Files einen Ordner höher schiebe und bei den imports den . weglasse. Aber von einem package kann ich nicht lokal importieren.

Warum nicht?

Folgendes habe ich noch probiert ohne eine Lösung zu erzeugen:
- Eine __init.py___ mit den importen von den modulen angelegt
- Absolute Dot-Path (project.config.prod statt .prod)
- sys.path.append vorher hinzugefügt

Kann mir jemand ein Beispiel zeigen und vielleicht kurz erklären, was ich falsch mache?
BlackJack

@brave: Wenn Du Module in/aus einem Package importieren möchtest, egal ob absolut oder relativ, dann brauchst Du vor allem erst einmal eines: Mindestens ein Package. Wenn Du `project.config.prod` importieren möchtest, dann brauchst Du zwei, nämlich `project` und `config`. Packages werden durch die `__init__.py` ”erstellt”. Und Du willst dann auch nicht `project/config/settings.py` ausführen, sondern das Modul `project.config.settings` mit dem ``-m``-Argument von Python. Wenn Du das nämlich direkt in der Packageverzeichnisstruktur als Programm ausführst, dann wird *der* Pfad zum Suchpfad von Modulen hinzugefügt, und Module und Packages in dem Verzeichnis sind über zwei Arten erreichbar.
Antworten