Получить имя из файла Python, который вызвал импортPython

Программы на Python
Anonymous
Получить имя из файла Python, который вызвал импорт

Сообщение Anonymous »

Я искал ее в Интернете, но пока не нашел ответа.

У меня есть одна библиотека, которая импортируется в каждый второй файл.
допустим, библиотека импортирована как 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


На основе ответа я написал две строки, которые предоставляют мне нужные данные:

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__


Подробнее здесь: https://stackoverflow.com/questions/523 ... the-import

Вернуться в «Python»