最近在学Python语言,照着书上一个用Pygame的例子写了一个游戏程序,想把它打包出来,在网上找了很多帖子,但在实际过程中还是遇到了很多问题,所以做个笔记,备忘:
- Windows7 64位操作系统
- Python3.4 64位
- pygame1.9.3 64位
——————-`
pip
pip 是一个安装Python包的工具, 一般是在Python安装目录下的Scripts文件夹里。如果电脑上有pip,打开CMD窗口,进入pip所在目录,或者把这个目录添加到环境变量,输入
pip list
就可以看到已经安装的Python包
如果电脑上没有,可以到网上下载一个,链接https://pypi.python.org/pypi/pip。
下载完成之后,解压到一个文件夹,用CMD控制台进入解压目录,输入:
python setup.py install
等待完成安装即可。
Pyinstaller
Pyinstaller是一个用来打包程序的模块,需要到官网下载,下载链接http://www.pyinstaller.org/downloads.html。
当前版本支持的Python版本,以及如何安装,在官网上都有介绍。
下载下来之后解压,用CMD进入解压目录,输入
pip install pyinstaller
在这个步骤我的安装过程多次出错,基本都是缺少模块引起的。如果提示缺少distribute,官网下载,https://pypi.python.org/pypi/distribute,用pip安装
pip install distribute
如果缺少setuptools、pywin32,同样下载安装。
如果依然报错,试试输入这个
pip3 install pyinstaller
本人亲测有用。
打包
将所要打包的程序(即.py文件和引用的资源文件)放在一个文件夹里,用CMD进入这个目录,输入
pyinstaller -F -w XXX.PY
XXX.py即有程序入口的那个文件。
等待打包完成,会生成一个build文件夹和一个dist文件夹,exe可执行文件就在dist文件夹里,如果程序引用有资源,则要把资源文件放在这个exe正确的相对目录下。
如果打包出错,可以参考build文件夹里的warnXXX.txt文件,这个文件记录了一些警告信息,仅供参考,并不一定能在里面找出错误。
根据官方文档的说法,应该先打包成单文件夹的形式,也许比单文件更能找出错误,即使用
pyinstaller -D -w XXX.py
命令进行打包。
我的exe运行出错,然后我使用了Visual studio进行调试,它告诉我pygame.font.pyd出错,即pygame下字体模块加载出错,于是我下载一些.ttf格式的字体文件,然后把程序里面用到字体的地方改成
pygame.font.Font('XXX.ttf', 40)
但是这并没有解决我的问题,最后搞了半天才发现是资源路径不对,一定要检查exe文件与资源文件的相对路径!!!
最后的最后,我终于把我的程序打包成了exe,成功运行。