跳转到内容

打包窗口

打包窗口(Build)通过菜单项目 → 打包打开,它负责把当前项目工程打包成独立的桌面应用或网页应用:它会先准备一份受保护的项目副本,再交给 PyInstaller 或 PyOdide 打包,整个过程都会输出到控制台。

打包窗口

窗口顶部是标签页,每个标签页对应一个打包目标:

标签页产出
桌面应用一个文件夹,里面是当前操作系统(Windows / macOS / Linux)可运行的程序。
网页应用一个文件夹(index.html + game.zip),在浏览器里直接运行游戏。

打包窗口桌面应用

选项说明
应用名称可执行文件及其所在文件夹的名称。留空时使用工程名。
应用图标应用的图标,支持 .png、.ico、.icns,默认为项目中的 image/logo.png。
输出目录存放打包结果的文件夹,默认为项目文件夹,打包结果写入其 build/Windows/ 子目录。最终的exe可以在build/Windows/dist/{应用名称}文件夹中找到
打包开始打包;打包过程中该按钮文本会变成停止。
运行游戏打包成功后可用:以独立进程启动生成的可执行文件,方便立刻试玩。
打开输出目录在文件管理器中打开输出目录。

这些设置会保存在工程里,下次打开打包窗口时会自动填好。每次打包都会先自动清空之前打包留下的缓存与临时文件,无需手动清理。

可把整个 dist/<应用名称>/ 文件夹(或它的压缩包)发送给其他玩家。除了 dist/,输出目录里还有 _build/、_protected和一个 .spec 文件,它们都是中间产物,可以直接删除,下次打包会自动重新生成。

<输出目录>/build/<操作系统>/dist/<应用名称>/
├─ <应用名称>.exe 可执行文件
└─ _internal 依赖文件

打包窗口网页应用

网页应用打包功能可以把工程打包成一个很小的文件夹(index.html + game.zip),在任何现代浏览器里直接玩,玩家无需安装任何东西。

选项说明
应用名称页面标题,默认为项目文件夹名称。
应用图标浏览器标签页图标,默认为项目中的 image/logo.png,打包时会被转换为 favicon.ico。
输出目录默认为项目文件夹,打包结果写入其 build/Web/ 子目录。
打包开始打包;打包过程中该按钮文本会变成停止。
在浏览器中运行为输出文件夹启动本地服务器并自动打开浏览器。

在浏览器中运行按钮是试玩打包结果最快的方式:打包成功后按钮变为可用,它会启动一个本地小服务器,并在默认浏览器中打开游戏页面。

<输出目录>/build/Web/
├─ index.html 页面(负责打开游戏、显示加载状态与错误)
├─ game.zip 受保护的工程 + 打过补丁的引擎副本
├─ favicon.ico 浏览器标签图标

把 index.html 与 game.zip 上传到任意静态托管(GitHub Pages、Netlify、普通 Web 服务器)即可发布游戏。或者可以通过以下命令运行游戏:

Terminal window
python -m http.server 8000 --directory "<输出目录>/build/Web"

运行命令后在浏览器中打开 http://localhost:8000/即可。

打包前会复制出一份项目工程副本,原项目目录不会被改动,所有处理都在副本上进行。在副本里会删除全部注释与文档字符串;安装了 pyobfus 的话还会做简单的代码混淆;然后会加密项目资源,被加密的包括图片、音频、字体、场景文件、而project.pygs 和 main.py 则保持明文。

日志或弹窗含义
项目打包失败,请检查日志。请把控制台向上翻到第一条以 ERROR: 开头的日志,那里描述了失败的步骤。
构建结束但没有找到可执行文件:…/dist打包正常结束但没有生成可执行文件,通常是应用名称里包含了文件系统不接受的字符——换一个简单的名称重新打包即可。
找不到以下模块,已跳过:…游戏导入的模块没有安装在运行编辑器的 Python 环境里,安装后重新打包。