Я искал его в интернете, но пока не смог найти ответ.
У меня есть одна библиотека, которая импортируется в любой другой файл.
скажем, библиотека импортируется как import my_lib
в файлах, которые его используют.
в mylib Я хотел бы сделать что-то вроде __imported_from__
, чтобы код знал, откуда идет импорт. Мне это нужно для целей регистрации (другой вызов другой файл журнала / логин)
Это будет журнал на данный момент:
2018-09-13 01:36:00,921 - my_lib - INFO - Start Processing
2018-09-13 01:36:30,921 - my_lib - INFO - Done Processing
2018-09-13 01:37:00,921 - my_lib - INFO - Start Processing
2018-09-13 01:37:30,921 - my_lib - INFO - Done Processing
Я хочу, чтобы my_lib содержал имя из импортированного файла, чтобы в моем журнале можно было видеть, откуда поступил вызов. Как в примере ниже
2018-09-13 01:36:00,921 - import_from_file_1 - INFO - Start Processing
2018-09-13 01:36:30,921 - import_from_file_1 - INFO - Done Processing
2018-09-13 01:37:00,921 - import_from_file_2 - INFO - Start Processing
2018-09-13 01:37:30,921 - import_from_file_2 - INFO - Done Processing
Основываясь на ответе, я написал 2 строки, которые предоставляют мне данные, которые я хочу:
import inspect
from os.path import basename, splitext
imported_from_file = (inspect.stack()[1][1]) if __name__ != '__main__' else False
used_from = splitext(basename(imported_from_file))[0] if imported_from_file else __name__