Este es mi mejor solución hasta ahora al problema de acceso al módulo de llamadas desde dentro de una función:¿Cómo obtener el módulo desde el que se llamó a la función en ejecución?
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__']
... pero implícita en el manejo de la KeyError
es el supuesto (en gran parte infundada) de que puede ocurrir solo si filename
se está ejecutando como __main__
.
¿La biblioteca estándar de Python proporciona una forma más robusta de hacer esto?