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

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_loadFile "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 671, in _load_unlockedFile "PyInstaller\loader\pyimod03_importers.py", line 495, in exec_moduleFile "pgzrun.py", line 23, in <module>File "pgzero\runner.py", line 106, in prepare_modFile "pgzero\game.py", line 92, in show_default_iconFile "pkgutil.py", line 637, in get_dataFile "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" 中注释代码,以防引入默认图标
  • 第二步是在打包时添加游戏需要的资源

相关文章:

  • mysql数据类型和常用函数
  • windowsVMware虚拟机中扩展linux磁盘空间
  • 代码+视频,R语言logistic回归交互项(交互作用)的可视化分析
  • Eureka的介绍和作用,以及搭建
  • GPT实战系列-LangChain的Prompt提示模版构建
  • Leetcode 448. 找到所有数组中消失的数字
  • 【Django开发】前后端分离美多商城项目第3篇:用户部分,1. 后端接口设计:【附代码文档】
  • 机器学习-04-分类算法-04-支持向量机SVM
  • JNDI注入原理及利用IDEA漏洞复现
  • 小巧玲珑的SQLite
  • Java中的类与对象
  • 笔试总结01
  • 深度学习基础知识概述
  • 【算法】差分、前缀和(重新排序)
  • 外包干了3天,技术明显进步。。。。。
  • 【comparator, comparable】小总结
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • 2019.2.20 c++ 知识梳理
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • HTML中设置input等文本框为不可操作
  • Linux CTF 逆向入门
  • SQLServer之创建数据库快照
  • Vue 2.3、2.4 知识点小结
  • Yeoman_Bower_Grunt
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 程序员最讨厌的9句话,你可有补充?
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 使用 Docker 部署 Spring Boot项目
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • 数据库巡检项
  • #### go map 底层结构 ####
  • #git 撤消对文件的更改
  • #单片机(TB6600驱动42步进电机)
  • (1)(1.13) SiK无线电高级配置(六)
  • (6)添加vue-cookie
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (算法设计与分析)第一章算法概述-习题
  • (转)c++ std::pair 与 std::make
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET Micro Framework初体验(二)
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .NET大文件上传知识整理
  • .ui文件相关
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • [1127]图形打印 sdutOJ
  • [1181]linux两台服务器之间传输文件和文件夹
  • [android学习笔记]学习jni编程
  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步
  • [BUUCTF NewStarCTF 2023 公开赛道] week3 crypto/pwn
  • [C#]winform制作仪表盘好用的表盘控件和使用方法