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

PyInstaller打包Python脚本为exe后CMD窗口闪退如何解决

问题原因

你在代码末尾添加的input等待语句仅在程序正常执行完全部逻辑时才会运行,当触发输入类型错误、数值超出范围调用sys.exit()时,程序会直接提前终止,无法执行到最后的等待语句,控制台窗口会随程序退出直接关闭。

解决方案
  • 方案1:用try-except结构包裹全局逻辑,捕获所有程序终止场景,统一触发等待逻辑
    修改后的代码如下:
import sys
import traceback

def main():
    x = int(input("  请输入一个数字 :"))
    y = int(input("  请输入一个数字 :"))
    if x>100 or y > 100 :
        sys.exit("错误:数值超出允许范围")
    z=x+y
    print(f"计算结果为:{z}")

if __name__ == "__main__":
    try:
        main()
    except SystemExit as e:
        # 捕获sys.exit触发的主动退出,打印自定义错误信息
        if str(e):
            print(e)
    except Exception:
        # 捕获所有运行时异常,打印完整错误回溯
        traceback.print_exc()
    # 无论正常退出还是异常退出,都等待用户输入后再关闭窗口
    input('按回车键退出')

该方案适配所有场景,打包成exe后不管是正常运行、主动退出还是触发运行时错误,都会停在控制台等待用户操作。

  • 方案2:调试阶段通过手动打开的CMD运行exe
    先打开CMD终端,使用cd命令切换到exe所在的文件夹,直接输入exe的完整文件名回车运行。此时控制台是手动启动的,程序退出后窗口不会自动关闭,所有输出和异常回溯都会完整保留。
打包注意事项

使用PyInstaller打包时不要添加-w/--windowed参数,该参数是给GUI程序使用的,会禁用控制台窗口导致所有输出不可见;默认打包模式就是控制台模式,也可以主动添加-c/--console参数确认开启控制台功能。

内容的提问来源于stack exchange,提问作者G.ONE

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:18:03