Sur la base de la réponse de Ned Batchelder, j'ai élaboré une solution. Bien que je ne la recommande pas pour autre chose que le débogage et le dépannage. Il y a une meilleure solution sur la page liée.
Mettre le module m1
à un projet Root :
import inspect
def get_request():
for f in inspect.stack():
f_code = inspect.getmembers(f.frame, inspect.iscode)[0][1]
f_locals = [v for (n, v) in inspect.getmembers(f.frame) if n == 'f_locals'][0]
co_varnames = [v for (n, v) in inspect.getmembers(f_code) if n == 'co_varnames'][0]
if 'request' in co_varnames:
return f_locals['request']
Puis dans n'importe quel autre fichier :
import m1
print(m1.get_response().path)
Vous devriez vous assurer que vous n'introduisez pas cycles de référence . Je n'ai pas compris dans quelles conditions particulières je dois faire quoi exactement. Non pas que cela soit important dans mon cas. Mais votre kilométrage peut varier.