使用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中操作字符串之replace()方法的使用
May 19 Python
简单的Apache+FastCGI+Django配置指南
Jul 22 Python
OpenCV-Python实现轮廓检测实例分析
Jan 05 Python
python 字典 按key值大小 倒序取值的实例
Jul 06 Python
selenium python 实现基本自动化测试的示例代码
Feb 25 Python
python实现维吉尼亚算法
Mar 20 Python
Python画图高斯分布的示例
Jul 10 Python
使用Pandas对数据进行筛选和排序的实现
Jul 29 Python
Python模块的定义,模块的导入,__name__用法实例分析
Jan 07 Python
Python selenium爬虫实现定时任务过程解析
Jun 08 Python
在keras里面实现计算f1-score的代码
Jun 15 Python
Python应用自动化部署工具Fabric原理及使用解析
Nov 30 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发送post请求的三种方法
2014/02/11 PHP
ThinkPHP惯例配置文件详解
2014/07/14 PHP
浅析PHP编程中10个最常见的错误
2014/08/08 PHP
php中substr()函数参数说明及用法实例
2014/11/15 PHP
PHP后台微信支付和支付宝支付开发
2017/04/28 PHP
PHP将整数数字转换为罗马数字实例分享
2019/03/17 PHP
javascript中用星号表示预录入内容的实现代码
2011/01/08 Javascript
js将控件隐藏的方法及display属性介绍
2013/07/04 Javascript
JavaScript中使用document.write向页面输出内容实例
2014/10/16 Javascript
深入理解JavaScript系列(49):Function模式(上篇)
2015/03/04 Javascript
详解JavaScript对W3C DOM模版的支持情况
2015/06/16 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
AngularJS入门教程之静态模板详解
2016/08/18 Javascript
细数JavaScript 一个等号,两个等号,三个等号的区别
2016/10/09 Javascript
js 轮播效果实例分享
2016/12/28 Javascript
javascript实现数据双向绑定的三种方式小结
2017/03/09 Javascript
js判断文件类型大小并给出提示的实现方法
2018/01/03 Javascript
浅谈React的最大亮点之虚拟DOM
2018/05/29 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
JavaScript查看代码运行效率console.time()与console.timeEnd()用法
2019/01/18 Javascript
js中实现继承的五种方法
2021/01/25 Javascript
[01:03:59]2018DOTA2亚洲邀请赛3月30日 小组赛B组VGJ.T VS Secret
2018/03/31 DOTA
Python机器学习之决策树算法
2017/12/22 Python
pycharm 配置远程解释器的方法
2018/10/28 Python
python解释器spython使用及原理解析
2019/08/24 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
Numpy实现卷积神经网络(CNN)的示例
2020/10/09 Python
String是最基本的数据类型吗?
2013/06/13 面试题
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?用contains来区分是否有重复的对象。还是都不用
2013/07/30 面试题
科技开发中心办公室主任岗位责任制
2014/02/10 职场文书
创建学习型党组织实施方案
2014/03/29 职场文书
授权委托书格式范文
2014/08/02 职场文书
报案材料怎么写
2015/05/25 职场文书
Python-typing: 类型标注与支持 Any类型详解
2021/05/10 Python
苹果可能正在打击不进行更新的 App
2022/04/24 数码科技
GPU服务器的多用户配置方法
2022/07/07 Servers