用pyinstaller打包多个py文件转成exe格式
用pyinstaller打包多个py文件转成exe格式
响应国家号召2019-Ncov 在家闲来无聊,学写一个飞船攻打外星人的python程序,并打包成exe。综合了几个博客成功将自己写的python 文件转成exe。
首先要注意一下:打包python文件成exe格式这个过程只能在windows环境下运行.打包后的程序不依赖客户端是否安装python。
- 用Pycharm 安装Pyinstaller 和pywin32.
File->Settings->Project Interpreter.点击右侧+号,在“Available Package”中搜索"Pyinstaller"可安装版本,然后点击“Install Package”按钮。(极力推荐大家安装Pycharm IDE 编写调试代码,非常好用)
- 安装完Pyinstaller后,按照相同方法安装Pywin32.
3.找到pyinstaller.exe 的安装目录
- 按照https://blog.csdn.net/weixin_43502949/article/details/101057825方法生成一个原始的spec文件。
在pyinstaller目录下,命令行输入pyi-makespec alien_invasion.py
alien_invasion.py.py为Python程序的入口py文件,根据自身项目情况修改
将在当前文件夹下生成了一个alien_invasion.spec文件
- 打开SPEC 文件,修改如下
6. 执行下面的命令行(这里绝对路径是通过拖拽文件自动获取的,其实可以用相对路径)
E:\Python_PyCharm37\venv\Scripts*pyinstaller.
exe* -D E:\Python_PyCharm37\alien_invasion*alien_invasion.spec*
6。pyinstaller会在当前目录下生成两个文件build 和dist。最终的打包程序exe放在dist下面。双击exe执行。
7. 一开始我的exe程序每次都能生成,但是执行时总是异常。后来浏览了其他博主的经验发现是程序里面Font用了None的地方(None的话就采用系统默认GBK格式,有些字符将识别不了),修改为某一种特定的字体就好。
pygame游戏的py文件运行好好的,打包成exe文件就会闪退,并且不给出报错信息。经排查,是字体的问题:
font = pygame.font.SysFont(‘None’,40)
上式不会在py文件运行中出现问题,但是exe文件就会导致崩溃。所以需要更换成系统自带的字体,比如 Arial 或Tahoma:
font = pygame.font.SysFont(‘Tahoma’,40)
8.最终的效果为
————————————————
附录:pyinstaller 命令行参数释义
pyinstaller -F demo.py
参数 含义
-F 指定打包后只生成一个exe格式的文件
-D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
-c –console, –nowindowed 使用控制台,无界面(默认)
-w –windowed, –noconsole 使用窗口,无控制台
-p 添加搜索路径,让其找到对应的库。
-i 改变生成程序的icon图标
参考链接:
- https://www.jianshu.com/p/5a59b6985346
- https://blog.csdn.net/yu3235119310/article/details/102878480
- https://blog.csdn.net/weixin_43502949/article/details/101057825
如有侵权,请连接我删除。这里只是个人学些笔记,供参考。