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

PyInstaller打包Pygame项目运行报No such file or directory错误如何解决

错误原因

PyInstaller打包时不会自动收录Pygame依赖的默认字体文件freesansbold.ttf。打包后的程序运行时,会先将所有内置资源解压到/tmp/_MEIxxxxxx格式的临时目录下,当程序触发字体加载逻辑时,找不到对应路径下的字体文件,先抛出文件不存在异常,最终导致段错误崩溃。

解决方案

方法一:打包命令直接指定资源

在PyInstaller打包命令中通过--add-data参数显式声明要打包该字体文件:

  • Linux/macOS 执行命令:
pyinstaller -F --add-data "$(python3 -c "import pygame,os;print(os.path.dirname(pygame.__file__))")/freesansbold.ttf:pygame/" main.py
  • Windows 执行命令:
pyinstaller -F --add-data "%(python -c "import pygame,os;print(os.path.dirname(pygame.__file__))")%\freesansbold.ttf;pygame" main.py

方法二:修改spec配置文件

如果已经生成了打包用的.spec文件,直接修改文件中的datas配置项:

# 替换为你本地Python环境中pygame的freesansbold.ttf实际路径
datas = [
    ("/usr/local/lib/python3.10/site-packages/pygame/freesansbold.ttf", "pygame")
]

修改完成后重新执行pyinstaller xxx.spec完成打包即可。

方法三:代码规避默认字体调用

直接在代码中放弃使用Pygame的默认字体,改为加载项目自带的字体文件:
将原有类似pygame.font.SysFont(None, 32)的写法,替换为:

# 字体文件放在项目目录下,打包时一起收录即可
font = pygame.font.Font("./myfont.ttf", 32)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:27:00