একই ধরণের সমস্যার মুখোমুখি হয়ে আমি জানতে পেরেছি যে সিস মডিউল থেকে sys._current_frames () তে অন্তত সুনির্দিষ্ট ব্যবহারের ক্ষেত্রে পরিদর্শন আমদানির প্রয়োজন ছাড়াই আপনাকে সহায়তা করতে পারে এমন আকর্ষণীয় তথ্য রয়েছে।
>>> sys._current_frames()
{4052: <frame object at 0x03200C98>}
তারপরে আপনি f_back ব্যবহার করে "উপরে উঠতে" পারেন:
>>> 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__'
উপরের মার্ক রডির পরামর্শ অনুসারে ফাইলের নামের জন্য আপনি f.f_back.f_code.co_filename ব্যবহার করতে পারেন। আমি এই পদ্ধতির সীমাবদ্ধতা এবং সতর্কতা সম্পর্কে নিশ্চিত নই (একাধিক থ্রেড সম্ভবত সমস্যা হতে পারে) তবে আমি আমার ক্ষেত্রে এটি ব্যবহারের ইচ্ছা করি।
caller_name
হতে পারে না__main__