当前位置:首页>python>【Python钢琴节奏大师·第11讲】项目发布篇-PyInstaller打包与exe生成指南

【Python钢琴节奏大师·第11讲】项目发布篇-PyInstaller打包与exe生成指南

  • 2026-10-05 20:40:13
【Python钢琴节奏大师·第11讲】项目发布篇-PyInstaller打包与exe生成指南

🎹 Python钢琴节奏大师 · 第11章

系列:Python钢琴节奏大师:从零到游戏开发实战[1]章节:第11章 / 共12章标题:项目发布篇-PyInstaller打包与exe生成指南上一章:第10章-视觉美化篇[2]下一章:第12章-毕业总结篇[3]


打包与分享——生成exe文件

今日目标:学习使用PyInstaller打包Python程序,生成独立的exe文件,添加图标和资源,让游戏可以在没有Python环境的电脑上运行。

💡 本章核心:把Python程序变成exe,分享给朋友玩


🎹 效果预览

完成本篇学习后,你将得到一个:

📁 钢琴节奏大师/├── 🎹 钢琴节奏大师.exe    ← 双击就能玩!├── 📁 sounds/              ← 音效文件夹│   ├── c4.wav│   ├── d4.wav│   └── ...└── 📄 README.txt          ← 使用说明

把 钢琴节奏大师.exe 发给朋友,他们不用装Python也能玩!


🤔 为什么要打包?

Python程序的痛点

问题
说明
需要Python环境
别人电脑没装Python,跑不了
需要安装依赖
pygame等库要手动装
文件分散
代码、资源、音效分开,容易丢
不够专业
给人一个.py文件,不够酷

打包的好处

  • ✅ 双击运行,无需安装
  • ✅ 所有文件打包在一起
  • ✅ 可以添加图标
  • ✅ 看起来更专业

📝 第一步:安装PyInstaller

什么是PyInstaller?

PyInstaller是一个工具,可以把Python程序打包成独立的可执行文件(exe)。

安装命令

pip install pyinstaller

或使用国内镜像:

pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple

验证安装

pyinstaller --version

显示版本号(如 5.13.0)表示安装成功。


📝 第二步:准备项目文件

项目结构

my_piano_game/├── piano_game.py          # 主程序├── sounds/                # 音效文件夹│   ├── c4.wav│   ├── d4.wav│   ├── ...│   └── as4.wav└── icon.ico               # 图标(可选)

修改代码:使用相对路径

打包后,程序运行时的路径会变化。需要修改代码,使用相对路径:

import osimport sys# 获取程序运行目录defget_resource_path(relative_path):"""获取资源文件的绝对路径"""ifhasattr(sys, '_MEIPASS'):# PyInstaller打包后的临时目录return os.path.join(sys._MEIPASS, relative_path)# 开发时的目录return os.path.join(os.path.abspath("."), relative_path)# 使用示例sound_path = get_resource_path("sounds/c4.wav")white_sounds = [pygame.mixer.Sound(get_resource_path(f"sounds/{f}")) for f in WHITE_SOUNDS]

为什么要这样写?

PyInstaller打包后,会把资源文件解压到一个临时目录(_MEIPASS)。这段代码会自动判断:

  • 如果是打包后的exe,从临时目录读取
  • 如果是直接运行py文件,从当前目录读取

📝 第三步:打包命令

基础打包

打开命令提示符,进入项目目录:

cd my_piano_gamepyinstaller piano_game.py

等待打包完成,会生成:

  • dist/ 文件夹(包含exe文件)
  • build/ 文件夹(中间文件,可删除)
  • piano_game.spec 文件(配置文件)

常用参数

参数
说明
示例
-F
打包成单个文件
pyinstaller -F piano_game.py
-w
不显示控制台窗口
pyinstaller -w piano_game.py
-i
指定图标
pyinstaller -i icon.ico piano_game.py
--add-data
添加资源文件
见下方
-n
指定输出名称
pyinstaller -n 钢琴大师 piano_game.py

完整打包命令

pyinstaller -F -w -i icon.ico --add-data "sounds;sounds" -n "钢琴节奏大师" piano_game.py

Windows系统用分号 ;,Mac/Linux用冒号 :

参数详解

pyinstaller \    -F \                          # 打包成单个exe文件    -w \                          # 不显示黑窗口(console)    -i icon.ico \                 # 使用icon.ico作为图标    --add-data "sounds;sounds" \  # 把sounds文件夹打包进去    -n "钢琴节奏大师" \            # exe文件叫"钢琴节奏大师.exe"    piano_game.py                 # 主程序文件

📝 第四步:处理资源文件

方法一:使用--add-data(推荐)

pyinstaller -F -w --add-data "sounds;sounds" piano_game.py

这会:

  1. 把 sounds 文件夹打包进exe
  2. 运行时解压到临时目录的 sounds 文件夹

方法二:手动复制

打包后手动把 sounds 文件夹复制到 dist/ 目录:

dist/├── 钢琴节奏大师.exe└── sounds/          ← 手动复制    ├── c4.wav    └── ...

方法三:使用spec文件(高级)

编辑生成的 .spec 文件,添加资源:

a = Analysis(    ['piano_game.py'],    pathex=[],    binaries=[],    datas=[('sounds', 'sounds')],  # 添加这行    ...)

然后运行:

pyinstaller piano_game.spec

📝 第五步:添加图标

准备图标文件

图标需要是 .ico 格式(Windows)。

获取图标的方法:

  1. 网上下载免费图标
  2. 用在线转换工具把png转成ico
  3. 用图片编辑软件制作

推荐尺寸:256x256 像素

使用图标

pyinstaller -i icon.ico piano_game.py

📝 第六步:测试和分发

测试exe文件

  1. 进入 dist/ 文件夹
  2. 双击 钢琴节奏大师.exe
  3. 测试所有功能(声音、键盘、计分等)

常见问题

问题
原因
解决
闪退
资源文件路径错误
检查 get_resource_path 函数
没声音
sounds文件夹没打包
使用 --add-data 参数
图标不显示
图标格式不对
确保是.ico格式
文件太大
PyInstaller打包了所有依赖
正常,可以用UPX压缩

压缩exe文件(可选)

安装UPX可以减小exe体积:

# 下载UPX,解压到系统路径# PyInstaller会自动检测并使用

分发游戏

把以下文件打包成zip,发给朋友:

钢琴节奏大师.zip├── 钢琴节奏大师.exe├── sounds/              ← 如果用--add-data打包了,这步可省略│   └── ...└── 使用说明.txt

使用说明.txt 示例:

🎹 钢琴节奏大师 🎹操作说明:- A S D F G H J:白键(do re mi fa sol la si)- W E T Y U:黑键(#do #re #fa #sol #la)- 空格键:开始游戏- 数字键1-4:切换主题玩法:音符从上方落下,到达判定线时按下对应按键。祝你玩得开心!

🎯 完整打包流程

# 1. 安装pyinstallerpip install pyinstaller# 2. 进入项目目录cd my_piano_game# 3. 修改代码,使用 get_resource_path# 4. 打包pyinstaller -F -w --add-data "sounds;sounds" -i icon.ico -n "钢琴节奏大师" piano_game.py# 5. 测试dist\钢琴节奏大师.exe# 6. 分发# 把 dist\钢琴节奏大师.exe 和 sounds文件夹 打包

🔍 核心概念

1. PyInstaller工作原理

  1. 分析Python代码,找到所有依赖
  2. 把Python解释器和依赖库打包
  3. 把资源文件一起打包
  4. 生成独立的exe文件

2. 资源路径处理

ifhasattr(sys, '_MEIPASS'):# 打包后,从临时目录读取else:# 开发时,从当前目录读取

3. 单文件 vs 文件夹模式

模式
参数
优点
缺点
单文件
-F
只有一个exe,方便分发
启动慢(需要解压)
文件夹
无
启动快
多个文件,容易丢

🎨 进阶技巧

1. 隐藏控制台(-w)

游戏程序应该加上 -w,不显示黑窗口。

调试时可以不加,看错误信息。

2. 版本信息

创建 version.txt:

VSVersionInfo(  ffi=FixedFileInfo(    filevers=(1, 0, 0, 0),    prodvers=(1, 0, 0, 0),    ...  ))

打包时添加:

pyinstaller --version-file version.txt piano_game.py

3. 多平台打包

  • Windows:在Windows上打包
  • Mac:在Mac上打包
  • Linux:在Linux上打包

PyInstaller不能跨平台打包。


❓ 常见问题

Q1:打包后运行闪退

排查步骤:

  1. 不加 -w 打包,看错误信息
  2. 检查资源路径是否正确
  3. 确保所有依赖都安装了

Q2:sounds文件夹找不到

解决:使用 --add-data "sounds;sounds",并在代码中用 get_resource_path

Q3:exe文件太大

原因:PyInstaller打包了Python解释器和所有库

解决:

  • 使用UPX压缩
  • 用虚拟环境,只安装必要依赖
  • 接受现实(游戏几百MB很正常)

Q4:杀毒软件报毒

原因:PyInstaller打包的exe特征码被误报

解决:

  • 添加到白名单
  • 使用代码签名证书(付费)
  • 告诉用户是误报

Q5:Mac上打包成app

pyinstaller -w --osx-bundle-identifier com.yourname.pianogame piano_game.py

🎉 恭喜你完成第11课!

今天你已经:

  • ✅ 学会了使用PyInstaller打包
  • ✅ 掌握了资源文件处理
  • ✅ 添加了图标和美化
  • ✅ 可以分享游戏给朋友了!

你的钢琴游戏现在是一个可以独立运行的软件了!


🎬 下篇预告

第12篇:《系列总结——回顾与扩展》

  • 回顾12篇学习内容
  • 项目完整代码整理
  • 扩展功能建议
  • 学习路线图

本系列文章面向零基础小学生,每篇都有详细步骤和配图说明。遇到问题欢迎在评论区留言!关注回复“钢琴”免费获取源代码下载地址。

最新文章

随机文章