gpt4 book ai didi

python - 为什么在 python 中导入 kivy 时会打印信息行?

转载 作者:行者123 更新时间:2023-11-30 22:17:18 25 4
gpt4 key购买 nike

当我在 python 中导入 kivy 时:

>>> import kivy

打印以下三个调试行:

[INFO   ] [Logger      ] Record Log in C:\Users\usrname\.kivy\logs\kivy_18-04-07_50.txt
[INFO ] [Kivy ] v1.10.0
[INFO ] [Python ] v3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)]

我知道这是故意的而不是错误,但我想抑制此输出。我已阅读文件 kivy\__init__.py 并发现执行以下行时会打印这些行:

from kivy.compat import PY2

所以我也阅读了 kivy\compat.py,它甚至不是一个大文件(102 行),但我仍然不明白为什么会打印调试行。

我已经在 python 控制台中执行了该文件的每一行(包括文档字符串和注释),但无法重现它。

有人可以向我解释一下吗?我认为这是内部的东西,只有因为我用 pip 安装它才可能,但实际上我不知道这里发生了什么。

最佳答案

输出由 kivy.logger module 生成,它简单地使用标准 Python logger module .

该模块添加一个记录器以输出到控制台,除非 KIVY_NO_CONSOLELOG环境变量已设置:

if 'KIVY_NO_CONSOLELOG' not in os.environ:
# ...
formatter = ColoredFormatter(color_fmt, use_color=use_color)
console = ConsoleHandler()
console.setFormatter(formatter)
Logger.addHandler(console)

从那时起,记录的消息将打印到您的控制台。

这不是 kivy.compat触发这一切的模块;当在包中导入模块时,Python 将始终确保首先加载包本身。因此import kivy.compat将触发 kivy 的导入本身(如果尚未加载)。

kivy/__init__.py输出第一条日志消息:

if RELEASE:
Logger.info('Kivy: v%s' % (__version__))

但是kivy.logger.FileHandler同样配置的对象(除非在环境中设置了 KIVY_NO_FILELOG)在首次使用时运行额外的代码并插入 Logger.info('Logger: Record log in %s' % filename)之前Kivy: v<version>消息已处理。最后,kivy/__init__.py执行Logger.info('Python: v{}'.format(sys.version))输出Python版本信息。

关于python - 为什么在 python 中导入 kivy 时会打印信息行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49711968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com