You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyInstaller打包的Python程序生成.exe后运行即关闭如何解决?

解决PyInstaller打包exe后窗口自动关闭的问题

方案1:修正打包参数

你说在Windows控制台运行exe会弹出新窗口,大概率是打包时用了-w/--windowed参数——这个参数会让程序脱离控制台运行,哪怕加了input()也没法捕获输入。

  • 重新打包时去掉该参数,用命令:
    pyinstaller your_script.py
    
    这样生成的exe会绑定控制台,运行时不会自动关闭,能正常接收输入。

方案2:排查隐藏异常

虽然能看到所有打印内容,但可能程序在走到你的循环代码前就抛出了未捕获的异常,只是窗口关太快没察觉。

  • 在主代码外层加异常捕获,把错误写入日志文件:
    import traceback
    
    try:
        # 你的原有业务代码
        print("程序正常输出内容")
        # ...
        # 你的循环代码
        while(True):
            out = input("You want to exit now? y/n  ")
            if out == 'y':
                print("Goodbye!")
                break
    except Exception as e:
        with open("error_log.txt", "w", encoding="utf-8") as f:
            f.write(traceback.format_exc())
        input("程序出错,已生成错误日志,按回车关闭")
    
    重新打包运行后,若有异常会生成error_log.txt,能直接看到问题原因。

方案3:修复控制台编码问题

Windows控制台默认编码可能和程序输出编码不匹配,导致输入输出异常,看似执行完实际是编码错误中断了流程。

  • 在程序开头加编码设置:
    import sys
    import os
    if sys.platform == "win32":
        os.system("chcp 65001")
    
    重新打包后测试输入功能。

方案4:强制窗口停留(适合无控制台打包场景)

如果必须用-w参数打包(无独立控制台窗口),可以在程序末尾加系统命令强制停留:

import os
os.system("pause")

不过更推荐方案1的打包方式,能保证正常交互逻辑。


内容的提问来源于stack exchange,提问作者Ann Luneva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 22:39:56