benzer karşı karşıya kalan sorun, ben sys modülünden sys._current_frames() en azından belirli kullanım örnekleri içinde, teftiş ithal etmek gerek kalmadan, size yardımcı olabilir ilginç bilgiler içerdiğini tespit etmiştir.
>>> sys._current_frames()
{4052: <frame object at 0x03200C98>}
Ardından f_back kullanarak "yukarı taşımak" olabilir:
>>> f = sys._current_frames().values()[0]
>>> print f.f_back.f_globals['__file__']
'/base/data/home/apps/apricot/1.6456165165151/caller.py'
>>> print f.f_back.f_globals['__name__']
'__main__'
ayrıca f.f_back.f_code.co_filename kullanabilirsiniz dosya, yukarıda Mark Roddy tarafından önerildiği gibi. Bu yöntemin sınırlarından ve uyarılarından emin değilim (birden çok konu büyük olasılıkla bir problem olacaktır) ama bunu benim durumumda kullanmak niyetindeyim.
.. bir başka giriş noktası komut bar.py çağırır varsayın ve böylece 'caller_name' olamaz' –
emin senin örnek kod doğru olduğunu misiniz __main__'? Myapp/bar.py gövdesi olmamalıdır: import foo; foo.info ('Merhaba') # => [myapp.bar] Merhaba –
Doğru, kodu çözdüm. –