【发布时间】:2019-02-18 01:44:32
【问题描述】:
我已经在互联网上搜索过,但到目前为止我找不到答案。
我有一个在其他文件中导入的库。
假设库被导入为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__
【问题讨论】:
-
代码的行为不应因被调用/导入/加载的位置而有所不同从!
-
在我的日志文件中只是一个不同的字符串。添加了一个示例。
-
那么你只是想在日志中包含一个堆栈跟踪(可能很简略)...?
标签: python python-2.7 python-import