Этого можно достичь, используя sys._getframe()
:
% cat test1.py
#!/usr/bin/env python
import sys
def function():
print 'Called from within:', sys._getframe().f_back.f_code.co_filename
test2.py
очень похоже на ваше, но с фиксированной import
:
% cat test2.py
#!/usr/bin/env python
import test1
test1.function()
Тестовый прогон ...
% ./test2.py
Called from within: ./test2.py
N.B:
Детали реализации CPython: эту функцию следует использовать только для внутренних и специализированных целей. Не гарантируется существование во всех реализациях Python.