python - 在 python 3.x(使用 wxPython GUI)日志记录中启用无缓冲输出
问题描述
我有一个我一直在构建的 Py3.x GUI 应用程序Gooey
。该应用程序功能齐全,GUI 按预期工作,但内置控制台/终端接收缓冲输出除外。
.py
如果我使用 运行文件,这不是问题pythonw -u script.py
,但是我现在尝试将工具捆绑/冻结到.app
. 捆绑过程已经成功,但是打开应用程序时仍然存在缓冲输出的问题。
到目前为止,我发现了以下内容,但我尝试过的没有任何效果:
有几个线程建议在每次调用时使用
flush=True
withprint()
来写入,但是logging
- 这是我在这里感兴趣的 - 没有这样的互补标志。因此,该线程中的各种猴子修补解决方案对我来说也没有用(需要注意的是我不知道它的内部logging
原理,所以也许有一种类似的方法适用于可以工作的记录器?Gooey
本身,和打包过程输出的日志信息比我自己的调用多得多,而且仍然是缓冲的,所以看起来“全局非缓冲”是真正需要的。该线程提供了多种方法。确实,建议
sys.stdout
使用 0 缓冲区大小重新打开,但是根据 PIP 3116,在第一个线程中关于它是否仍然适用于 Python 3 存在冲突的意见,当然在我手中,使用nonbuffered_stdout = os.fdopen(sys.stdout.fileno(), 'w', 0) sys.stdout = nonbuffered_stdout
似乎
.app
干脆断了。无论有
-u
没有.PYTHONUNBUFFERED=1
-S
所以,TL;DR:
当脚本没有被显式调用时,如何在 Python 3.x 中实现无缓冲输出python3 -u
?
我仍在尝试组装 MWE,但是gooey
结合使用与包装过程相结合使这有点困难。
解决方案
推荐阅读
- c# - 在 Windows Presentation Foundation WPF C# 中禁用自动鼠标悬停
- java - 如何在Processing / Java中直接在HSB颜色和Lab颜色之间转换
- python - How can I reveal type hints in PyCharm?
- spring-boot - Spring Boot 中的数据库插入/更新事件监听器
- django - 如何删除 Django 中的相关模型(多对多)?
- swift - 使用 Metal 渲染一个矩形
- python - 两个分类变量的笛卡尔积
- makefile - 为什么 gnu make 忽略模式规则的缺失依赖项?
- javascript - 我可以使用 Safari 移动用户代理自动执行 Apple Pay
- c# - 如何将键/值放入 Azure 应用服务配置-应用程序设置