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

由setup.py bdist生成的Exe启动即关闭,如何记录日志或排查异常?

解决EXE启动后立即关闭的问题:日志记录与程序暂停方法

碰到这种exe启动就闪退的情况确实头疼,根本看不到报错信息,下面分享几个亲测有效的方法来排查问题:

一、先让程序暂停,直接查看报错信息

方法1:从命令行运行EXE

这是最快获取报错信息的方式:

  • 打开命令提示符(CMD)或者PowerShell
  • 导航到EXE文件所在目录,比如输入 cd C:\path\to\your\exe\folder
  • 直接输入EXE文件名运行,比如 your_app.exe
    程序运行时的报错信息会直接显示在命令行窗口里,窗口也不会自动关闭,你可以仔细查看哪里出了问题。

方法2:在代码末尾添加暂停逻辑

如果你的程序是控制台应用,可以在主程序入口的最后(比如if __name__ == "__main__":代码块的末尾)加上一行:

input("程序执行完毕/出错,按回车键退出...")

如果是GUI程序(比如用Tkinter、PyQt),可以在异常捕获里添加弹窗或等待逻辑,比如:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
import tkinter.messagebox

try:
    # 你的主程序逻辑
    app = QApplication(sys.argv)
    window = QMainWindow()
    window.show()
    sys.exit(app.exec_())
except Exception as e:
    tkinter.messagebox.showerror("程序错误", f"出错原因:{str(e)}")
    input("按回车键退出...")

修改代码后重新打包,这样程序即使报错也会停留,让你看到错误内容。

二、添加日志记录,捕获详细异常信息

如果程序崩溃得太快,连暂停都来不及,那就用日志把所有运行信息和错误都记录到文件里。用Python内置的logging模块就能轻松实现:

在你的主程序开头添加如下配置代码:

import logging
import os

# 创建日志保存目录
log_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "app_logs")
os.makedirs(log_dir, exist_ok=True)

# 配置日志格式和输出方式
logging.basicConfig(
    level=logging.DEBUG,  # 记录所有级别的日志信息
    format="%(asctime)s - %(levelname)s - %(module)s:%(lineno)d - %(message)s",
    handlers=[
        logging.FileHandler(os.path.join(log_dir, "run_log.log")),  # 写入日志文件
        logging.StreamHandler()  # 同时输出到控制台(命令行运行时可见)
    ]
)

# 用try-except包裹主逻辑,捕获所有异常并记录
try:
    logging.info("程序启动成功")
    # 你的主程序代码写在这里
    # ...
except Exception as e:
    logging.error(f"程序运行出错: {str(e)}", exc_info=True)  # 记录完整的错误堆栈
    raise  # 可选,保留异常抛出方便配合暂停逻辑查看

这样不管程序是正常运行还是崩溃,所有关键信息都会保存到app_logs/run_log.log文件里,你可以打开日志文件查看具体的错误堆栈,精准定位问题根源。

三、额外调试小技巧

  • 检查打包依赖:用bdist打包时,偶尔会漏掉一些隐性依赖库,你可以用pip freeze导出项目依赖列表,确认打包过程中是否都包含了这些依赖。
  • 测试精简版代码:如果你的程序逻辑复杂,可以先写一个极简测试脚本(比如只打印一句话+暂停),打包后运行确认流程没问题,再逐步添加原有代码排查问题。

内容的提问来源于stack exchange,提问作者Yugendhar Anveshra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:12:14