使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法


Posted in Python onSeptember 06, 2019

下面看下通过Pyinstaller打包Pygame库写的小游戏程序出现的问题解决方法

# -基于Python的Pygame库的GUI游戏

游戏内容是通过飞船发射子弹来射击外星人
空格键为开火,左右方向键移动,并设立了
不同关卡。

使用说明:

开发环境,游戏直接运行alien_invasion.exe即可,也可在具有Python3环境下运行alien_invasion.py

练习环境:

Python:3.5.4 64位
pyinstall:3.3.1
pyinstall使用:
pyinstaller -F demo.py
参数  含义
-F  指定打包后只生成一个exe格式的文件
-D  ?onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
-c  ?console, ?nowindowed 使用控制台,无界面(默认选项)
-w  ?windowed, ?noconsole 使用窗口,无控制台
-p  添加搜索路径,让其找到对应的库。
-i  改变生成程序的icon图标

打包注意事项:

1.打包有2种方式:

  •     第一种是使用'-F'打包成单一的可执行文件,如alien_invasion.exe,此项目需要将
  •       images文件夹放置在与其同一目录下;
  •     第二种是默认使用'-D'方式,(但是我打包完成后无法运行,打包时经常出现“hidden import “pygame._view”not found”)

2.打包的文件与《Python编程:从入门到实践》练习的项目文件有所差异,具体为
   button.py与scoreboard.py中的字体做了改动,由
        'pygame.font.SysFont(None, 48)'=>'pygame.font.SysFont('arial', 36)'

3.使用pyinstaller打包时,不会自动包含图片文件,所以最简单的方式是打包后将图片放在运行程序的
  相应路径下。

!!!打包完毕后一定要讲你的素材images放在exe目录里面,以便exe文件能够链接到你的素材。

PS:指定dist生成目录路径(而不是命令行当前目录)

pyinstaller -F E:/*/*/*.py --distpath=E:*/*/*/dist

接着介绍下使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件的方法。

一、安装Pyinstaller

环境:python3.6、window10

注意事项:

  • python64位版本打包的exe,只能在64位操作系统使用
  • 打包文件夹和文件的名称不能用中文
  • pygame打包是里面的字体要改成"arial"格式。 pygame.font.SysFont("宋体", 32) 32)  换成 pygame.font.SysFont('arial',32)

1、直接安装

pip命令安装:pip install Pyinstaller

安装成功后会提示如下图所示

使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法

2、Anaconda环境下安装

如果是在Anaconda环境下直接打包,可能会将其中大部分扩展都打包进去了,造成打包后的exe文件过大,为此有以下解决方案(如果未出现此问题的同学请跳过)。

  • 建立虚拟环境 :pipenv install
  • 进入虚拟环境:pipenv shell
  • 安装所需模块 pip install pygame
  • 打包的模块也要安装 pip install pyinstaller

本人在C:/Users/EDZ/目录中新建Pyinstaller文件,首先进入目录,建立虚拟环境,进入虚拟环境,最后安装程序所需的安装模块以及pyinstaller。具体过程如图所示:

使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法

使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法

二、使用Pyinstaller打包生成exe文件

将要打包的py文件放入所创建的C:\Users\EDZ\Pyinstaller目录中,将自定义程序图标ico文件,也一同放进程序所在目录程序。

使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法

使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法

介绍一下 Pyinstaller 常用的参数用法:

  • -F: 表示生成单个可执行文件
  • -D:表示打包多个文件,在dist中生成很多依赖文件,
  • -w:指定生成 GUI 软件,表示去掉控制台窗口
  • -i <Icon File>: 指定打包后可执行文件的图标

命令:pyinstaller -F -w -i snaker.ico retro_snaker.py

稍微等待后,如果成功则会提示successfully,如图所示:

使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法

三、运行生成的exe文件

打包完成后,exe程序将会产生在打包目录的dist文件中。

如图所示:

使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法

使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法

那么我们就可以打开并运行你所打包的exe文件了

使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法

四、exe文件运行中的问题 

缺少MSVisualC++ 2015动态库

打开程序,报错提示:无法定位程序输入点ucrtbase.terminate于动态链接库api-ms-win-crt-runtime-l1-1-0.dll上,如图所示:

使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法

 解决方案:安装:Visual C++ Redistributable for Visual Studio 2015

注:下载对应版本安装
微软官网:https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=48145

安装后重启下电脑

若还不行,尝试安装下这个补丁:KB2999226

微软官网:https://www.microsoft.com/en-us/download/details.aspx?id=49093

总结

以上所述是小编给大家介绍的使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python urllib、urllib2、httplib抓取网页代码实例
May 09 Python
Python文件及目录操作实例详解
Jun 04 Python
Django URL传递参数的方法总结
Aug 28 Python
Python实现数据库并行读取和写入实例
Jun 09 Python
python 找出list中最大或者最小几个数的索引方法
Oct 30 Python
解决python字典对值(值为列表)赋值出现重复的问题
Jan 20 Python
用Python识别人脸,人种等各种信息
Jul 15 Python
python使用celery实现异步任务执行的例子
Aug 28 Python
Python 实现Numpy中找出array中最大值所对应的行和列
Nov 26 Python
Python xlrd excel文件操作代码实例
Mar 10 Python
Python如何实现机器人聊天
Sep 10 Python
你喜欢篮球吗?Python实现篮球游戏
Jun 11 Python
python监控nginx端口和进程状态
Sep 06 #Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
Sep 06 #Python
修改 CentOS 6.x 上默认Python的方法
Sep 06 #Python
Python代理IP爬虫的新手使用教程
Sep 05 #Python
关于Python内存分配时的小秘密分享
Sep 05 #Python
python global关键字的用法详解
Sep 05 #Python
python requests证书问题解决
Sep 05 #Python
You might like
PHP+FastCGI+Nginx配置PHP运行环境
2014/08/07 PHP
Mac环境下php操作mysql数据库的方法分享
2015/05/11 PHP
jquery select下拉框操作的一些说明
2010/04/02 Javascript
js 控制下拉菜单刷新的方法
2013/03/03 Javascript
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
JavaScript中圆括号()和方括号[]的特殊用法疑问解答
2013/08/06 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
浅谈EasyUI中Treegrid节点的删除
2015/03/01 Javascript
jQuery实现加入购物车飞入动画效果
2015/03/14 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
2015/03/26 Javascript
Backbone.js 0.9.2 源码注释中文翻译版
2015/06/25 Javascript
jquery.Callbacks的实现详解
2016/11/30 Javascript
JavaScript使用readAsDataUrl方法预览图片
2017/05/10 Javascript
学习使用Bootstrap页面排版样式
2017/05/11 Javascript
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
element中Steps步骤条和Tabs标签页关联的解决
2020/12/08 Javascript
[02:12]探秘2016国际邀请赛中国区预选赛选手房间
2016/06/25 DOTA
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python生成随机验证码(中文验证码)示例
2014/04/03 Python
一个小示例告诉你Python语言的优雅之处
2014/07/04 Python
跟老齐学Python之坑爹的字符编码
2014/09/28 Python
PyTorch学习笔记之回归实战
2018/05/28 Python
Django项目中包含多个应用时对url的配置方法
2018/05/30 Python
python 实现分页显示从es中获取的数据方法
2018/12/26 Python
python  logging日志打印过程解析
2019/10/22 Python
2分钟教你实现环形/扇形菜单(基础版)
2020/01/15 HTML / CSS
Html5之svg可缩放矢量图形_动力节点Java学院整理
2017/07/17 HTML / CSS
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
使用索引(Index)有哪些需要考虑的因素
2016/10/19 面试题
同学聚会欢迎辞
2014/01/14 职场文书
导游词之吉林花园山
2019/10/17 职场文书
彻底理解golang中什么是nil
2021/04/29 Golang
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python
解决ubuntu安装软件时,status-code=409报错的问题
2022/12/24 Servers