Это можно сделать с помощью проверки стека:
#inside c.py:
import inspect
FRAME_FILENAME = 1
print "Imported from: ", inspect.getouterframes(inspect.currentframe())[-1][FRAME_FILENAME]
#or:
print "Imported from: ", inspect.stack()[-1][FRAME_FILENAME]
Но проверка стека может привести к ошибкам. Зачем вам нужно знать, откуда импортируется файл? Почему бы не иметь файл, который импортирует (a.py
и b.py
), передающий имя в c.py
? (при условии, что вы контролируете a.py
и b.py
)