当前位置: 首页 > article >正文

Python——pgzero游戏打包exe执行时报错

Python——pgzero游戏打包exe执行时报错

记录一次使用 pgzero 开发游戏,使用 pyinstaller 打包时报错

目录结构:
在这里插入图片描述

1. 第一次报错

打包指令:

pyinstaller -Fw .\code.py

结果打开报错

报错如下:

Traceback (most recent call last):
  File "code.py", line 1, in <module>
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "PyInstaller\loader\pyimod03_importers.py", line 495, in exec_module
  File "pgzrun.py", line 23, in <module>
  File "pgzero\runner.py", line 106, in prepare_mod
  File "pgzero\game.py", line 92, in show_default_icon
  File "pkgutil.py", line 637, in get_data
  File "PyInstaller\loader\pyimod03_importers.py", line 344, in get_data
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\XXX\\AppData\\Local\\Temp\\_MEI218762\\pgzero\\data\\icon.png'

在这里插入图片描述

根据报错信息,可以知道报错原因是没有找到这个图片,而我没有引入这个过这个图片,所以根据报错提示 File "pgzero\game.py", line 92, in show_default_icon ,猜测是这个文件出了问题

2. 第二次报错

在 python 的第三方包目录中找到 "pgzero\game.py",查看第92行代码
在这里插入图片描述
这里确实引入了一个文件,所以我把这两行注释掉再重新打包

在这里插入图片描述

在这里插入图片描述

结果还是报错,好的是游戏窗口已经出来了

在这里插入图片描述

3. 解决问题

这次猜测是因为打包时没有引入文件,所以我在打包指令中添加了引入文件的选项

pyinstaller -Fw --add-data ".\images\*;.\images" --add-data ".\music\*;.\music"  .\code.py  

选项意思是:添加数据,将 相对路径下 images 文件夹中的所有文件 添加到 exe文件中的 images 文件夹中

总结

问题主要是因为资源没有引入

  • 第一步是在 "pgzero\game.py" 中注释代码,以防引入默认图标
  • 第二步是在打包时添加游戏需要的资源

http://www.kler.cn/a/272288.html

相关文章:

  • Qt调用ffmpeg库实现简易视频播放器示例
  • 游戏AI,让AI 玩游戏有什么作用?
  • 豆包升级了“眼睛”,看APP截图就能写代码了!超低价让多模态AI普惠
  • SDL2:PC端编译使用 -- SDL2多媒体库使用音频实例
  • kafka学习笔记4-TLS加密 —— 筑梦之路
  • 【大模型】ChatGPT 高效处理图片技巧使用详解
  • 【Docker】常用命令 docker ps
  • pyinstaller打包不显示DOS窗口
  • 【GPT-SOVITS-03】SOVITS 模块-生成模型解析
  • LabVIEW电磁阀特性测控系统
  • UnityShader:IBL
  • 【洛谷 P9242】[蓝桥杯 2023 省 B] 接龙数列 题解(线性DP+二维数组)
  • -bash-4.2$
  • Lua中文语言编程源码-第六节,更改lmathlib.c 数学库函数, 使Lua加载中文库关键词(与数学库相关)
  • docker-compose是什么
  • 【PyTorch】进阶学习:一文详细介绍 torch.load() 的应用场景、实战代码示例
  • 指南:在各主流操作系统上安装与配置Apache Tomcat
  • git问题列表(一)(持续更新中~~~)
  • day11-栈与队列02
  • C语言快速入门之内存函数的使用和模拟实现
  • 大数据 - Spark系列《十四》- spark集群部署模式
  • 物联网终端telegraf采集设备信息
  • 实战!wsl 与主机网络通信,在 wsl 中搭建服务器。学了计算机网络,但只能刷刷面试题?那也太无聊了!这篇文章可以让你检测你的计网知识!
  • 7.Java整合MongoDB—项目创建
  • 学习python笔记:8,随机数
  • 【XML】xml转Freemind思维导图