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: 13241
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.
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
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: 13241
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`.
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
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: 13241
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@JakobPrie: Im Grunde gar nicht. Warum sollte man das auch wollen?
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
Antworten