Seite 1 von 1

Import von einem Package zum anderen

Verfasst: Sonntag 29. März 2009, 11:43
von burli
Hi, ich steh gerade wie der Ochs vor'm Berg und komm nicht weiter. Die Frage ist sicher auch schon ein dutzend mal gestellt und beantwortet worden, aber der Berg ist im Weg.

Simple Verzeichnisstruktur

Code: Alles auswählen

|-->Package1
|   |-->__init__.py
|   |-->modul1.py
|
|-->Package2
|   |-->__init__.py
|   |-->modul2.py
|
|-->main.py
In Package1.modul1 möchte ich jetzt modul2 aus Package2 importieren. Aber wie gesagt, ich habe gerade einen völligen Blackout

Verfasst: Sonntag 29. März 2009, 12:11
von Dauerbaustelle
Das geht erstmal garnicht, du musst das Package-Wurzelverzeichnis (also da wo Package1 und Package2 drin sind) zum `sys.path` hinzufügen. Oder dir PEP328 angucken.

Verfasst: Sonntag 29. März 2009, 12:22
von burli
Ok, danke. Jetzt wo du's sagst...

Ich habe inzwischen das zweite Package in das erste geschoben was in dem Fall auch eigentlich logisch war. Aber wie gesagt... der Berg :?

Verfasst: Sonntag 29. März 2009, 19:11
von str1442
Ich füge zu einer Art Rootpackage immer die Zeile

Code: Alles auswählen

sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir)))
(__path__ statt __file__ müsste aber auch gehen)

hinzu. Dann kannst du in jedem Subpackage mittels

Code: Alles auswählen

from rootpackage.anotherpackage import modul
die einzelne Module importieren. Du solltest aber überlegen, ob du durch die __init__.py des Packages sowas nicht noch sinnvoll abstrahieren kannst, sofern das Package nicht einfach als Gruppierung zur Ordnung dient.