import function datei nicht gefunden

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
Avantasia_1975
User
Beiträge: 1
Registriert: Samstag 17. März 2018, 10:04

Hallo,

es tut mir leid das diese wahrscheinlich doch eher simple Frage stelle, aber wenn man "import" und "No such file or directory" findet man ne Menge aber nicht mein Problem :)
Ich versuche es kurz zu halten.

Ich habe ein "Paket" erstellt wo die Stuktur wie folgt aussieht:

Code: Alles auswählen

app/
 -__init__.py
 -function.py
 -ordner/
   -__init__.py
   -datei.txt
   -datei.py 


Nun importiere ich in

Code: Alles auswählen

app/
 -ordner/
   -datei.py 

eine Funktion aus app/functions mittels:

Code: Alles auswählen

from app.function import function
Und rufe die Funktion auf

Code: Alles auswählen

return function("datei.txt")
Leider bekomme ich denn die Fehlermeldung "No such file or directory"
da die Funktion im anderen Verzeichnis aufgerufen wird also

Code: Alles auswählen

app/
 - funktion.py
und nicht wie ich erwartet habe da

Code: Alles auswählen

app/
 -ordner/
   -datei.py
Aber wenn ich die Funktion importiere sollte sie doch in dem Verzeichnis sein wo die importierende Datei liegt oder?
Wenn ich den absoluten Pfad nehme geht es aber das will ich nicht. Ich habe auch schon versucht die Funktion in
app/__init__.py
zu importieren und dann mittels

Code: Alles auswählen

from app import funktion
Aber das Ergebnis bleibt das gleiche :x

Ich blicke da echt nicht durch :(

Gruß
Andi
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@Avantasia_1975: Das aktuelle Verzeichnis ist immer das Verzeichnis, aus dem Du das Programm startest. Das ist generell so und hat nichts mit Python, irgendwelchen Verzeichnisstrukturen oder der Art, wie Du Module importierst, zu tun. Du willst aber eine Datei öffnen, die relativ zur Datei datei.py liegt. Dafür kennen alle Pythonmodule die Variable `__file__`, die den Pfad zur Pythondatei enthält:

Code: Alles auswählen

filename = os.path.join(os.path.dirname(__file__), "datei.txt")
return function(filename)
Antworten