Modulname und -pfad ermitteln

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
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Donnerstag 21. Juni 2007, 10:54

Hallo,

Ich stehe vor folgendem Problem:
Ich rufe mit 'import ...' aus einem Modul (Modul 1) ein anderes Modul (Modul 2) auf.
Nun möchte ich im Modul 2 den Pfad und Namen des Modul 1 ermittelten.
Geht das? Wie geht das?

Kann ich in Modul 2 auch die locals() und globals() von Modul 1 abfragen?
Gruß, Harry
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Donnerstag 21. Juni 2007, 11:13

Da Modul 1 in Modul 2 nicht bekannt ist, wird das wohl so herum nicht funktionieren (warum solltest du das tun wollen?). Umgekehrt kannst du aber in Modul 2 auf ``modul2.__file__`` zugreifen, um dessen Pfad zu erhalten.
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Donnerstag 21. Juni 2007, 11:21

Hallo Yogi,

Ich denke mir, wenn Modul 2 von Modul 1 aufgerufen wird, muß doch irgendwie herauszufinden sein, von welchem Modul aus Modul 2 aufgerufen wurde.
Gruß, Harry
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Donnerstag 21. Juni 2007, 11:23

HarryH hat geschrieben:Nun möchte ich im Modul 2 den Pfad und Namen des Modul 1 ermittelten.
Hallo HarryH!

Nein, das geht nicht, aber du kannst den Namen des gestarteten Programms ermitteln -- also das Hauptmodul.

Code: Alles auswählen

sys.argv[0]
Wenn du mehr brauchst, dann übergebe die Daten beim Aufruf der Funktion.

Edit:

Vielleicht lässt sich das aufrufende Modul über "inspect" raus finden. Aber der Preis wäre mir auf jeden Fall zu hoch.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten