Benzer bir sorunla karşılaştığımda, sys modülündeki sys._current_frames () işlevinin , en azından belirli kullanım durumlarında , inspect'i içe aktarmaya gerek kalmadan size yardımcı olabilecek ilginç bilgiler içerdiğini buldum .
>>> sys._current_frames()
{4052: <frame object at 0x03200C98>}
Daha sonra f_back kullanarak "yukarı" hareket edebilirsiniz:
>>> 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__'
Dosya adı için, yukarıda Mark Roddy tarafından önerildiği gibi, f.f_back.f_code.co_filename de kullanabilirsiniz. Bu yöntemin sınırlarından ve uyarılarından emin değilim (birden fazla iş parçacığı büyük olasılıkla bir sorun olacaktır) ama benim durumumda kullanmayı düşünüyorum.
caller_name
olamayacağını varsayalım__main__