Dihadapkan dengan masalah serupa, saya telah menemukan bahwa sys._current_frames () dari modul sys berisi informasi menarik yang dapat membantu Anda, tanpa perlu mengimpor inspeksi, setidaknya dalam kasus penggunaan tertentu.
>>> sys._current_frames()
{4052: <frame object at 0x03200C98>}
Anda kemudian dapat "naik" menggunakan f_back:
>>> f = sys._current_frames().values()[0]
>>> # for python3: f = list(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__'
Untuk nama file Anda juga bisa menggunakan f.f_back.f_code.co_filename, seperti yang disarankan oleh Mark Roddy di atas. Saya tidak yakin dengan batasan dan peringatan dari metode ini (beberapa utas kemungkinan besar akan menjadi masalah) tetapi saya bermaksud menggunakannya dalam kasus saya.
caller_name
tidak dapat__main__