项目场景
我在github
上fork
了一个使用python
编写的flappybird
游戏,然后想着打包一下。
下载地址
游戏截图
项目打包
先安装pyinstaller
库:
pip install pyinstaller
然后运行打包命令:
pyinstaller -F -w -i flappy.ico flappy.py
遇到的坑
问题1
开始我是在vscode
终端powershell
中运行打包命令,打包过程提示什么dll
文件找不到。
解决1
直接打开cmd
,cd
到项目所在的路径,再运行打包命令,就成功打包了,中间也不报错。
问题2
打包后的flappy.exe
是在dist
目录下,如果直接双击会报错:
方案2
因为该游戏还关联有音乐和图片等游戏素材,你需要把它从文件夹中提出来,放到上一级目录,再次双击就可以正常运行了。
问题3
但这里又遇到了一个问题,这打包的游戏也太大了吧,逗我玩的吧??这才多大点游戏,游戏代码总共也不过500
行,打包后却是228MB
,这也太夸张了。
方案3
网上查了一下资料,说是anaconda
或miniconda
的原因,打包时会引入一些不必要的模块,也就增大了程序的体积。推荐在pipenv
创建的虚拟环境在打包。
- 安装
pipenv
:
pip install pipenv
-
cd
到项目路径,运行命令pipenv install
创建虚拟环境。 - 运行命令
pipenv shell
激活虚拟环境 - 安装项目开发中用到的模块,我这里只用到了
pygame
,就只安装它了:
pip install pygame
- 当然,
pyinstaller
也要重新在虚拟环境中安装:
pip install pyinstaller
- 然后,重新运行打包命令:
pyinstaller -F -w -i flappy.ico flappy.py
在pipenv
创建的虚拟环境中打包后,程序的体积就小很多了,只有10.3MB
(记得还是要把打包的程序从dist
文件夹中拿出来,放到上一级目录)。
温馨提示
pipenv
创建的虚拟环境保存路径是在用户目录(C:\Users\xxx\
)下的.virtualenvs
文件夹中。如果想删除虚拟环境,请使用命令:pipenv --rm
。
引用参考
https://zhuanlan.zhihu.com/p/57674343