一、问题描述
之前只用pyinstaller打包过tkinter项目,很顺利,这次打包pygame就出了问题。打包出的exe文件双击后闪退,为了看到错误消息,我取消了-w选项,于是就在控制台看到了以下消息:
可以看到,无法找到我的字体文件。其实不止是字体文件,我游戏中的背景音乐和音效都找不到。这是因为打包的时候没有指定添加媒体文件。
二、解决方法
pyinstaller提供了--add-data选项来手动添加要一并打包的文件,这个选项可以多次使用。比如,有一个游戏项目的目录结构如下:
>chess
>music
bg.mp3
gameover.wav
win.wav
>font
msyh.ttf
main.py
board.py
piece.py
我们就要在cmd里cd到chess目录,打包时指定的文件是main.py主程序,并且要把所有的音频和字体文件添加进来。指令如下:
pyinstaller -F -w --add-data "music/*.mp3;./music" --add-data "music/*.wav;./music" --add-data "font/*.ttf;./font" main.py
几点说明:
- *是通配符,表示music文件夹里所有的mp3文件、所有的wav文件还有font文件夹里的所有ttf文件都要添加进去
- 要使用双引号
- windows系统要使用分号作为文件原本的路径和要存放的路径的分隔符,这一点和linux系统不一样,linux系统使用冒号
- 要存放的路径 ./music表示最外层目录下的music目录
如果这篇博文帮到了你,就请给我点个赞吧(#^.^#)
有疑问也欢迎留言~博主可nice啦,在线秒回ヾ(◍°∇°◍)ノ゙