2017-01-20 4 views
0

Ich habe eine Projektstruktur wie diese,Python/Django Import Albtraum (einzigartiger Fall)

myAPI/ <--- 
     announcements/ 
      models.py 
      views.py 
      tests.py <--- 
     tests/ <---- 
      models.py 
      views.py 
     myAPI/ <--- 
     settings.py 
     .... 

Jetzt bin ich nicht in der Lage zu meinen Tests (django app) zu meinen Ankündigungen App zu importieren.

Ankündigungen/models.py

from tests.models import Test <--- Error!! 

weil es sucht eine Klasse in django/Bekanntmachungen/tests.py Datei

ich auch versucht:

from myAPI.tests.models import Test <--- Error!! 

Es sucht nach einem Modul im myAPI-Ordner (mit der Datei settings.py), der offensichtlich einen Fehler auslöst.

Jede Hilfe mit diesem Import wäre willkommen! EDIT: Mit Python 2.7

+1

Ich kann einen schnellen Weg vorschlagen. Ändern Sie den Dateinamen. –

+0

naja, so könnten die Testläufer meine Testfalldateien nicht finden, nehme ich an! –

+0

Ändern Sie dann den Namen der App. –

Antwort

1

Dies ist eines der Probleme, mit Python 2, die von Python wurde behoben 3.

Wenn Sie from __future__ import absolute_import an der Spitze des Moduls setzen, dann werden alle Importe standardmäßig absolut sind, und es wird funktionieren (es ist das Verhalten von Python 3). Verwenden Sie from . import <thing>, um aus dem gleichen Verzeichnis wie dem aktuellen Modul zu importieren.

Das heißt, ich mag es nicht, eine App "Tests" zu nennen, da viele Testläufer davon ausgehen, dass dort Tests laufen.