비슷한 문제에 직면 하여 sys 모듈의 sys._current_frames () 에는 적어도 특정 사용 사례에서 inspect를 가져올 필요없이 도움이 될 수있는 흥미로운 정보가 포함되어 있음을 발견했습니다 .
>>> 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__'
파일 이름의 경우 위의 Mark Roddy가 제안한대로 f.f_back.f_code.co_filename을 사용할 수도 있습니다. 이 방법의 한계와주의 사항은 확실하지 않지만 (다중 스레드가 문제가 될 가능성이 높음) 제 경우에는 사용하려고합니다.
caller_name
수 없다고 가정합니다.__main__