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

Python3.6 64位下PyInstaller转换的EXE运行崩溃问题排查

排查PyInstaller打包Pygame程序崩溃的问题

首先,我梳理了你的测试代码和出问题的代码,结合PyInstaller打包Pygame程序的常见坑,找到了几个关键问题,咱们一步步来解决:

1. 最紧急:列表索引越界Bug

你的代码里藏着一个必然会导致崩溃的索引错误——这和PyInstaller无关,但会让程序(不管是脚本还是打包后的exe)在随机触发时直接崩溃:

看这段初始化代码:

random_number = random.randint(0, len(bokmål))

random.randint(a, b)会返回包含a和b在内的整数,而bokmål的长度是18,它的有效索引范围是0~17。当随机数生成18时,访问bokmål[random_number]或者nynorsk[random_number]就会抛出IndexError: list index out of range,直接导致程序闪退。

你已经在正确回答的分支里写对了(random.randint(0, len(bokmål) - 1)),但初始的random_number定义要修正成同样的写法,避免触发索引越界。

2. Pygame字体加载问题(PyInstaller打包常见坑)

你的测试代码没有用到Pygame字体功能,而出问题的代码里用了:

font = pygame.font.SysFont(None, 30)

使用SysFont(None, ...)会调用系统默认字体,但PyInstaller打包时不会自动包含系统字体文件,导致exe运行时找不到字体资源,直接崩溃。

修复方法:

方案A:使用具体字体文件(最可靠)

  1. 找一个字体文件(比如Arial.ttf,可以从系统字体目录复制,或者下载开源字体),放在脚本同一目录下。
  2. 修改字体加载代码:
font = pygame.font.Font("Arial.ttf", 30)
  1. 打包时用--add-data参数把字体文件包含进去:
# Windows系统
pyinstaller --console --add-data "Arial.ttf;." your_script.py
# macOS/Linux系统
pyinstaller --console --add-data "Arial.ttf:." your_script.py

方案B:强制打包Pygame字体模块(备选)

如果坚持使用系统默认字体,可以尝试在打包时添加隐藏导入:

pyinstaller --console --hidden-import pygame.font your_script.py

不过这种方法兼容性较差,不同系统的默认字体可能不一致,优先推荐方案A。

3. 先获取崩溃的具体错误信息

排查PyInstaller打包问题的第一步,永远是看具体报错:

  • 打包时一定要加--console参数,这样运行exe时会弹出命令行窗口,显示崩溃的具体原因(比如是索引错误还是字体加载失败)。
  • 打包命令示例:
pyinstaller --console your_script.py

运行生成的exe后,命令行里的报错信息能帮你快速定位剩余问题。

4. 文件路径相关优化

你的代码里有文件保存逻辑,如果用户输入的路径不存在,或者用了相对路径,exe运行时的工作目录可能和预期不一致,导致文件保存失败:

complet_file = os.path.join(filplasering, navn_på_dock + ".txt")
file = open(complet_file, "w")

优化建议:

添加目录存在性检查,自动创建不存在的目录:

import os
if filplasering:  # 确保用户输入了路径
    os.makedirs(filplasering, exist_ok=True)  # 路径不存在则自动创建
    complet_file = os.path.join(filplasering, navn_på_dock + ".txt")
    with open(complet_file, "w") as file:
        file.write(str(words_typed_wrong))

总结

优先修复索引越界的Bug,然后处理字体加载问题,再通过--console参数查看具体错误,应该就能解决exe崩溃的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:07:03