Aufrufen von Methoden in anderer Python-Datei

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
JakobPrie
User
Beiträge: 91
Registriert: Sonntag 21. Juni 2020, 11:12

Hallo, ich möchte aus einer Datei mehrere Funktionen aus einer anderen Datei ("module_skills") in einem unterordner (welcher "resources" heißt) aufrufen.
Jetzt habe ich es mit folgender Zeile probiert:

Code: Alles auswählen

from .resources.module_skills import assamble_array, get_enumerate, get_text_beetween
Dabei bekomme ich aber fogenden Fehler:

Code: Alles auswählen

ImportError: attempted relative import with no known parent package
Was mache ich falsch?
Benutzeravatar
__blackjack__
User
Beiträge: 13199
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@JakobPrie: Du hast da Murks mit den Packages gemacht. Da muss in jedem Package eine `__init__.py` liegen und das aktuelle Arbeitsverzeichnis darf nicht innerhalb irgendeines Packages liegen.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
JakobPrie
User
Beiträge: 91
Registriert: Sonntag 21. Juni 2020, 11:12

Und wie mach ich das, wenn ich in einer Datei Funktionen aus einer anderen Datei in einem anderen Ordner öffnen möchte
Benutzeravatar
__blackjack__
User
Beiträge: 13199
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@JakobPrie: Du möchtest keine Funktionen in einer Datei in einem Ordner verwenden, Du möchtest Funktionen aus einem Modul in einem Package verwenden. Und dazu musst Du ein korrektes Packge erstellen, und dann dafür sorgen, dass sich dieses Package im Suchpfad für Module/Packages von Python befindet. Die beiden gängigen Varianten: Das Package auf oberster Ebene befindet sich im aktuellen Arbeitsverzeichnis, oder das Package ist installiert. Nicht gut, weil hässlicher Hack: man manipuliert `sys.path`.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
JakobPrie
User
Beiträge: 91
Registriert: Sonntag 21. Juni 2020, 11:12

okay, wie könnte ich das lösen, anstatt ein package zu erstellen
Benutzeravatar
__blackjack__
User
Beiträge: 13199
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@JakobPrie: Im Grunde gar nicht. Warum sollte man das auch wollen?
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
Antworten