【问题标题】:Pyinstaller: setting unbuffered stdio on python 2.7 on WindowsPyinstaller:在 Windows 上的 python 2.7 中设置无缓冲标准输入
【发布时间】:2020-06-21 13:38:50
【问题描述】:

我有一个通常使用以下命令运行的 Windows 10 python 脚本:-

python -u my_python_application.py

-u 选项用于强制标准输入、标准输出和标准错误完全为unbuffered。这给了我的应用程序一种即时的感觉,如果没有它,操作发生后记录数据会出现延迟。

我现在正在尝试通过 Pyinstaller 创建一个可执行文件。到目前为止,一切都按预期工作,我可以生成一个可执行文件,我可以在没有任何重大问题的情况下运行它。但是,生成的可执行文件没有无缓冲的 stdio 选项,因此我的应用程序不像其不可执行形式那样即时/响应。所以我的问题是:在使用 Pyinstaller 时是否强制 stdio 完全无缓冲?

我在这里找到了类似的未答复帖子:-

我在 Windows 10 机器上使用 Python v2.7.13 和 Pyinstaller v3.6。

【问题讨论】:

标签: python python-2.7 pyinstaller stdio


【解决方案1】:

这更像是一种解决方法而不是修复方法,但我能够解决这个问题的方法是在调用 print 语句时使用选项 flush=True。换句话说,我用一个名为 app_print() 的新函数替换了我的应用程序中的所有打印语句,如下所示:-

#Do something
app_print("printing a generic string")

然后我将 app_print 定义为始终刷新 stdio:-

def app_print(sting):
    print(string, flush=True)

这解决了我的问题,生成的可执行文件现在具有与原始 python 脚本类似的即时感觉。

更多链接:-

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-04
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 2023-04-08
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    相关资源
    最近更新 更多