इसी तरह की समस्या से जूझते हुए , मैंने पाया है कि sys मॉड्यूल से sys._current_frames () में ऐसी रोचक जानकारी होती है जो आपकी मदद कर सकती है, निरीक्षण के आयात की आवश्यकता के बिना, कम से कम विशिष्ट उपयोग के मामलों में।
>>> sys._current_frames()
{4052: <frame object at 0x03200C98>}
फिर आप 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__'
फ़ाइल नाम के लिए आप f.f_back.f_code.co_filename का भी उपयोग कर सकते हैं, जैसा कि ऊपर मार्क रोड्डी ने सुझाया है। मैं इस पद्धति की सीमा और गुहाओं के बारे में निश्चित नहीं हूं (कई धागे सबसे अधिक समस्या होगी), लेकिन मैं इसे अपने मामले में उपयोग करने का इरादा रखता हूं।
caller_name
नहीं हो सकती है__main__