Das ist meine beste Lösung so weit, um das Problem innerhalb einer Funktion des rufenden Modul für den Zugriff auf:Wie bekomme ich das Modul, von dem die gerade ausgeführte Funktion aufgerufen wurde?
import inspect
import sys
def calling_module(level=0):
filename = inspect.stack()[level+2][1]
modulename = inspect.getmodulename(filename)
try:
return sys.modules[modulename]
except KeyError:
return sys.modules['__main__']
... aber implizit in der Handhabung der KeyError
ist die (weitgehend unbegründet) Annahme, dass es passiert nur, wenn filename
als __main__
ausgeführt wird.
Bietet die Python-Standardbibliothek eine robustere Möglichkeit, dies zu tun?