Seite 1 von 1

import problem

Verfasst: Mittwoch 7. April 2010, 14:41
von dijji
Ich habe folgende Verzeichnisstruktur:

c:\project\
c:\project\__init__.py
c:\project\test.py
c:\project\deps\__init__.py
c:\project\deps\mod1\__init__.py
c:\project\deps\mod1\[...]
c:\project\deps\mod2\__init__.py
c:\project\deps\mod2\[...]

Die Verzeichnisse \deps\mod1 und \deps\mod2 enthalten externen Code, welchen ich in meinem Projekt verwenden möchte, aber nicht anpassen will:

In c:\project\test.py versuche ich nun ein

import deps.mod1

Das funktioniert im Normalfall auch. Allerdings enthält der Code in deps\mod1\ in diversen Dateien die folgende Zeile:

import mod2

Beim Ausführen von test.py bekomme ich dann den Fehler, dass mod2 nicht gefunden werden kann:

Traceback (most recent call last):
File "test.py", line 1, in <module>
import deps.mod1
File "C:\project\deps\mod1\__init__.py", line 1, in <module>
import mod2
ImportError: No module named mod2

Ist es möglich ohne Modifikation des gesamten Codes in deps\mod1 und deps\mod2 die Module mod1 und mod2 direkt aus c:\project\ zu importieren?

Danke für eure Hilfe!

Verfasst: Mittwoch 7. April 2010, 14:44
von jbs
Du könntest relative imports nutzen oder den order deps in sys.path aufnehmen.

Aber muss diese Struktur denn sein?

Verfasst: Mittwoch 7. April 2010, 14:47
von dijji
Ich wollte diese Struktur, um den externen Code (alles in deps/) sauber von meinem eigenen zu trennen. Gibt es dafür ansonsten einen Weg, der mehr python-like ist? Oder wie mache ich das am besten?