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

使用PyInstaller打包含key.json的Python项目后控制台闪退如何修复?

问题修复方案

核心原因

你之前的推测是正确的,问题确实出在key.json未被正确包含进可执行文件导致的启动失败,具体触发闪退的原因有两点:

  • 代码启动时直接调用os.stat('key.json'),如果文件不存在会直接抛出FileNotFoundError导致程序直接终止,控制台闪退
  • PyInstaller单文件模式默认不会自动打包项目中的非代码文件,打包后的exe运行时找不到key.json直接崩溃

修复步骤

1. 优化代码异常处理逻辑

首先修改代码的文件判断逻辑,避免文件不存在时直接报错,同时适配PyInstaller的运行环境:

import random
import json
import os
import sys

# 适配PyInstaller打包后的资源路径读取
def get_resource_path(relative_path):
    if getattr(sys, 'frozen', False):
        # 打包后运行时的临时资源目录
        base_path = sys._MEIPASS
    else:
        # 开发环境下的当前目录
        base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)

file_path = get_resource_path('key.json')
char = 0
letters = list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%&*?+-')

# 新增判断:文件不存在则先创建空文件
if not os.path.exists(file_path):
    open(file_path, 'w').close()

# 原来的stat判断逻辑和后续代码保持不变

2. 执行打包命令

打包时添加参数将key.json打包到可执行文件中:

  • Windows系统执行命令:pyinstaller -F --add-data "key.json;." main.py
  • Mac/Linux系统执行命令:pyinstaller -F --add-data "key.json:." main.py

3. 可选方案(无需打包key.json)

如果不想把key.json打包进exe,也可以打包完成后,将项目里的key.json和生成的exe放在同一目录下,直接运行exe即可正常读取文件。

通用排查技巧

后续遇到PyInstaller打包后闪退问题,可先打开系统命令行工具,将exe文件拖入命令行窗口后回车运行,即可看到完整的报错信息,方便快速定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 06:15:02