Import Problem Test Ordner vs. Package Ordner
Verfasst: Montag 6. August 2012, 08:41
Hallo zusammen,
habe zur Zeit ein Problem bei dem ich auch nach langer Recherche und Ausprobieren nicht weiterkomme.
Mein Projekt hat folgende Projektstruktur:
project/
--package_name/
----__init__.py
----moduleA.py (Hauptmodul)
----moduleB.py
----moduleC.py
--tests/
----moduleA_test.py
----moduleB_test.py
----moduleC_test.py
Hier ist moduleA.py das Hauptmodul das alle anderen Module importiert und direkt ausgeführt werden kann.
moduleB.py und moduleC.py enthalten Docstring-Tests und werden zu diesem Zwecke auch ausgeführt.
Die Test Files decken dann kompliziertere TestCases ab, wie bspw File Import und anschließender Abgleich.
Mein Problem:
Der Import von "package_name" funktioniert entweder in den Test Files, dann geht er in den Modulen nicht und umgedreht.
In moduleA.py hatte ich ursprünglich
Hat funktioniert, keine Probleme. Wenn ich dann allerdings die Unit Tests renne kriege ich gesagt "No module named moduleB", d.h. er kann diesen "relativen" Import nicht auflösen.
Ändere ich es in
funktionieren die Unit Tests, aber ich kann die einzelnen Module nicht mehr starten, weil relative Imports in nicht packages verboten sind 
In meinen Unittests importiere ich das komplette Package mit dem Path Hack (gefunden):
Die __init__.py (falls wichtig) sieht so aus:
Was kann man denn machen das beides funktioniert?
habe zur Zeit ein Problem bei dem ich auch nach langer Recherche und Ausprobieren nicht weiterkomme.
Mein Projekt hat folgende Projektstruktur:
project/
--package_name/
----__init__.py
----moduleA.py (Hauptmodul)
----moduleB.py
----moduleC.py
--tests/
----moduleA_test.py
----moduleB_test.py
----moduleC_test.py
Hier ist moduleA.py das Hauptmodul das alle anderen Module importiert und direkt ausgeführt werden kann.
moduleB.py und moduleC.py enthalten Docstring-Tests und werden zu diesem Zwecke auch ausgeführt.
Die Test Files decken dann kompliziertere TestCases ab, wie bspw File Import und anschließender Abgleich.
Mein Problem:
Der Import von "package_name" funktioniert entweder in den Test Files, dann geht er in den Modulen nicht und umgedreht.
In moduleA.py hatte ich ursprünglich
Code: Alles auswählen
import moduleB
import moduleC
Ändere ich es in
Code: Alles auswählen
from . import moduleB
from . import moduleC
In meinen Unittests importiere ich das komplette Package mit dem Path Hack (gefunden):
Code: Alles auswählen
import sys
import os
import unittest
# Path hack
sys.path.insert(0, os.path.abspath('..'))
import package_name
Code: Alles auswählen
from . import moduleA.py
from . import moduleB.py
from . import moduleC.py