Пожарский
В твоем примере импортируемый модуль #samplemod.py а значит по условиям задачи если ЕГО импортируют то ОН и ТОЛЬКО ОН должен узнать (сам в себе) имя имтортера (скрипта который его импортирует), Скажем модуль ведет статистику кто и когда его вызывает…
Ты же запускаешь #main.py и в нем получаешь строку,,,
Хорошо, лови
#imphook.py
import sys
import traceback as tb
import __builtin__
stnd_import = __builtin__.__import__
def my_import(name, globals, locals, from_list):
mod = stnd_import(name, globals, locals, from_list)
callback = getattr(stnd_import(name, globals, locals), ‘import_callback’, None)
if callback is not None:
callback(sys._getframe(1))
return mod
__builtin__.__import__ = my_import
#samplemod.py
'''Some module'''
def import_callback(frame):
code = frame.f_code
print code.co_name, code.co_filename, ‘:’, code.co_firstlineno
А здесть инсталируем hook и импортируем модуль samplemod
#main.py
import imphook
def f():
import samplemod
f()