Python Test/Debug - error - relative imports

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
efix
User
Beiträge: 43
Registriert: Samstag 7. Dezember 2019, 20:59

Hallo Leute,

kann mir jemand vielleicht einen Typ geben wie ich das Problem mit den relativen Imports am einfachsten löse...
Ich kann die Datei nicht debuggen und meine Tests ausführen weil er dann immer wegen den relative imports meckert.

Viele Grüße
Benutzeravatar
sparrow
User
Beiträge: 4244
Registriert: Freitag 17. April 2009, 10:28

Dafür brauchen wir den entsprechenden Code des Imports, die Datenstruktur des Projektes und was du tust, wenn der Fehler auftritt.
efix
User
Beiträge: 43
Registriert: Samstag 7. Dezember 2019, 20:59

Bin leider gerade unterwegs.
Ich möchte ein Teil meines Django Projekts Testen und die Datei importiert ein Model.

Ich importiere das Model mit:

from ..models import KlasseX

Ich muss die Datenbank noch mocken aber das Problem mit den Imports werde ich sowieso immer wieder haben.
efix
User
Beiträge: 43
Registriert: Samstag 7. Dezember 2019, 20:59

Ich glaub das einfachste ist eine .env Datei

Und dann ./ als Pythonpath
Benutzeravatar
sparrow
User
Beiträge: 4244
Registriert: Freitag 17. April 2009, 10:28

Was meinst du mit testen? UnitTests? Dafür hat Django ein entsprechendes Framework.

Wenn du die interaktivr Konsole nutzen willst: nimm die von Django.
efix
User
Beiträge: 43
Registriert: Samstag 7. Dezember 2019, 20:59

Also ich habe folgende Projekt-Struktur

Projekt:
myprojekt:
myapp:
services:
service.py
admin.py
...
myprojekt:
static:
templates:
manage.py
tests:
test_service.py
.env

Der import in test_service sieht so aus:

Code: Alles auswählen

from ..myproject.myapp.services.evaluate import BlaBlubService
Die .env:

Code: Alles auswählen

PYTHONPATH="./"
DJANGO_SETTINGS_MODULE="myproject.myproject.settings"
und die __init__.py von tests so:

Code: Alles auswählen

import django
django.setup()
Benutzeravatar
sparrow
User
Beiträge: 4244
Registriert: Freitag 17. April 2009, 10:28

Die Ordnerstrutkur ergibt keinen Sinn.
Das ist das Problem, wenn man sich irgendwas audenkt, statt das zu nehmen, was das Problem erzeugt.
Warum gibt es 2x das Verzeichnis myprojekt?
efix
User
Beiträge: 43
Registriert: Samstag 7. Dezember 2019, 20:59

Ja die Ordner Struktur ist nicht die beste. Die habe ich über commando Zeile von Django erstellt...
Könnte man ändern. Ich habe übrigens das Problem gelöst... eine env. Datei behebt zwar das Import Problem aber nicht die Django Abhängigkeiten...

Wie auch immer. Ich mach das jetzt über Django test und dann sag ich dem Debugger was er ausführen soll...
Trotzdem Danke für die Antwort
Benutzeravatar
sparrow
User
Beiträge: 4244
Registriert: Freitag 17. April 2009, 10:28

@efix:Das was keinen Sinn macht, ist nicht die Ordnerstruktur an sich - sondern wie du sie hier wiedergegeben hast. Da heißen zwei Ordner "myprojekt". Deshalb ist es immer sinnvoll zu zeigen, was tatsächlich da ist, statt etwas "das irgendwie genauso, naja fast, oh, ich hab mich vertippt".

Den Rest der Fragen hast du ja leider unbeantwortet gelassen.
Wie gesagt: Entweder führt man mit python manage.py test entsprechende Unittests aus oder man verwenden die Interaktive Shell von Django. Da hat man dann auch keine Probleme mit Abhängigkeiten - denn wenn Django läuft, dann läuft auch die interaktive Shell.
Benutzeravatar
grubenfox
User
Beiträge: 454
Registriert: Freitag 2. Dezember 2022, 15:49

efix hat geschrieben: Sonntag 19. Februar 2023, 18:45 Also ich habe folgende Projekt-Struktur

Projekt:
myprojekt:
myapp:
services:
service.py
admin.py
...
myprojekt:
static:
templates:
manage.py
tests:
test_service.py
.env
Wenn Einrückungen relevant sind, sowohl bei Programmcode, aber auch bei Ordnerstrukturen, dann bitte immer den Code Button </> nutzen
Antworten