Projektstruktur:Lokalisierung Projekt-specifc Konfigurationsdateien aus importierter Module
/lib/modules/mod1.py
/mod2.py
/subdir1/subdir2/mod3.py
/configs/config.yaml
mod3.py
Importe mod2.py
. mod2.py
Importe mod1.py
. mod1.py
lädt Konfigurationsdateien, die einen relativen Pfad zu mod2.py
mit os.getcwd()
haben.
Das Problem ist, dass, wenn mod3.py
Einfuhren mod2.py
, mod1.py
Versuche, die Konfigurationsdateien von einem Pfad relativ zu mod3.py
(dh /subdir1/subdir2/configs/config.yaml anstelle von /configs/config.yaml)--this zu laden funktioniert natürlich nicht.
Ich glaube zu verstehen, warum dies nicht funktioniert (os.getcwd()
erhalten Sie den Pfad der ursprünglich ausgeführten Datei).
Wie kann ich dieses Problem beheben, so dass mod1.py
einen Pfad relativ zum mod2.py
nutzen will, auch wenn mod2.py
von mod3.py
importiert wird?
Vielleicht wäre das Umschreiben des Codes, um das Laden von Dateien von relativen Standorten zu vermeiden, die beste Option, aber wenn Sie müssen, werfen Sie einen Blick auf 'mod2 .__ file__' ... – twalberg
Das Problem ist, dass der Speicherort von' mod2.py' Diese variieren je nach Projekt, aber die Dateien innerhalb des Projekts folgen immer einem relativen Pfad. In diesem Beispiel wird 'mod1.py' aus der Projektstruktur geladen - aber wenn diese von einem Speicherort außerhalb der Projektstruktur geladen wurde, würde der Speicherort von' mod2.py' verwendet werden, um den Speicherort von config.yaml festzulegen . – user2487593