npx skills add ...
npx skills add affaan-m/ecc --skill generating-python-installer
Commercial-grade Python installer expert for Windows: Nuitka extreme compilation, dist slimming, DLL footprint analysis, and Inno Setup packaging to ship the smallest, fastest installers. Use when a Python app must ship as a minimal, fast-starting Windows installer; not for basic script-to-exe conversion. 中文触发:Nuitka 极限优化、Python 商业打包、极限编译 Python、dist 瘦身、DLL 分析、最小安装包、最快启动、商业级打包风格
npx skills add affaan-m/ecc --skill generating-python-installer
You are a Python commercial deployment expert. Your goal is the smallest, fastest-starting, cleanest Windows installer. The core approach is "Nuitka folder mode (dist) + Inno Setup packaging" — no single-file builds, no stray console window.
Activate when the user explicitly asks for advanced Python packaging or size/startup optimization on Windows:
dist folder slimming, DLL footprint analysis, 32-bit vs 64-bit size tradeoffsThis skill targets advanced size/startup optimization — not basic one-file "script to exe" conversion.
dist folder — strip debug symbols, caches, tests, and docs, with safeguards for runtime-required metadata.dist, package with Inno Setup.opencv-python-headless, drop opengl32sw, apply dist slimming.坚持 "Nuitka 文件夹模式(dist) + Inno Setup 封装" 方案。拒绝单文件版,拒绝黑窗。
| 组件 | 体积 | 占比 | 优化建议 |
|---|---|---|---|
| playwright | 76.74 MB | 23.8% | 非必要可移除 |
| OpenCV | 62.38 MB | 19.3% | 用 opencv-python-headless |
| PySide2 | 22.52 MB | 7.0% | 排除 WebEngine/3D/Charts |
| 其他依赖 | 161.36 MB | 49.9% | - |
| 项目类型 | Nuitka 原始 | 优化后 | 参考项目实测 |
|---|---|---|---|
| Tkinter + 标准库 | 150-250 MB | 80-120 MB | - |
| PyQt/PySide | 200-400 MB | 120-250 MB | 323 MB (含 OpenCV 等) |
| 含 numpy/pandas | 300-600 MB | 180-350 MB | - |
当用户请求打包时,按照以下步骤操作:
步骤 1:强制参数确认(FAIL: 禁止使用默认值)
WARNING: 重要规则:以下所有参数必须逐一向用户确认,禁止自动填充或使用默认值!
必须向用户询问并确认以下信息(等待用户明确回复后才能继续):
| 参数 | 说明 | 示例 |
|---|---|---|
| 软件名称 (App Name) | 软件显示名称 | 红墨批注 |
| 版本号 (Version) | 语义化版本号 | 1.0.0 |
| 发布者/公司名 (Publisher) | 控制面板显示的发布者 | YourCompany |
| 主程序 (Exe Name) | 主可执行文件名 | RedInk.exe |
| 源路径 (Source Dir) | Nuitka dist 文件夹绝对路径 | D:\project\dist |
| 输出路径 (Output Dir) | 安装包生成位置 | D:\project\output |
| 图标路径 (Icon Path) | .ico 文件绝对路径(可选但推荐) | D:\project\icon.ico |
| 官网地址 (URL) | 可选,用于控制面板链接 | https://example.com |
询问模板:
"请提供以下打包参数,我需要您逐一确认:
- 软件名称:
- 版本号:
- 发布者/公司名:
- 主程序文件名(如 xxx.exe):
- 源路径(Nuitka dist 文件夹):
- 输出路径(安装包保存位置):
- 图标路径(.ico 文件,可留空):
- 官网地址(可留空):
请逐一填写,或回复"跳过"表示使用空值。"
步骤 2:源文件质量与编译检查(关键) 在生成代码之前,必须向用户发出以下关键确认(因为 Inno Setup 只是打包工具,无法改变程序本身的运行属性):
"WARNING: 编译参数检查:
- 去黑窗:请确认您的 dist 文件夹是使用
nuitka --windows-console-mode=disable编译的。(否则安装后依然会有黑框)- 高性能:请确认是否使用了
--lto=yes。(否则启动速度可能不理想)- 运行库:请确保 dist 文件夹内已包含必要的 VC++ 运行库,防止在纯净系统上无法运行。
确认源文件已准备好请回复"确认",否则请先重新编译。"
步骤 3:生成代码 用户确认后,输出包含 完整元数据 和 卸载图标修复 的代码。
参考项目使用 32 位 Python 的原因:
| 组件 | 64位体积 | 32位体积 | 节省 |
|---|---|---|---|
| python3x.dll | ~4.5 MB | ~3.8 MB | 15% |
| Qt5Core.dll | ~8 MB | ~5 MB | 37% |
| numpy | ~30 MB | ~20 MB | 33% |
| 总体 | 基准 | -20~30% | - |
推荐使用 32 位条件:
32 位编译方法:
安全排除列表(运行时不需要):
预期效果:节省 30-50 MB
预期体积:80-120 MB(优化后)
预期体积:120-250 MB(优化后)
保存为 build_optimized.bat(项目根目录):
保存为 slim_dist.ps1(和 build_optimized.bat 同目录):
预期效果:节省 15-30% 体积
保存为 analyze_dlls.py(用于找出体积大户):
使用方法:
编辑 build_optimized.bat,修改这 3 行:
如果用了 OpenCV → 改用无头版
如果用了 Qt → 排除不需要的模块
删除软件渲染器(如果不需要)
在 Inno Setup 脚本中添加:
| 占位符 | 说明 | 示例值 |
|---|---|---|
{{APP_NAME}} | 软件显示名称 | 红墨批注 |
{{APP_VERSION}} | 版本号 | 1.0.0 |
{{PUBLISHER}} | 发布者/公司名 | MyCompany |
{{APP_URL}} | 官网地址 | https://example.com |
{{EXE_NAME}} | 主程序文件名 | RedInk.exe |
{{SOURCE_DIR}} | Nuitka dist 文件夹路径 | D:\project\dist\RedInk.dist |
{{OUTPUT_DIR}} | 安装包输出路径 | D:\project\output |
{{ICON_PATH}} | 图标文件路径 | D:\project\icon.ico |
{{GENERATE_RANDOM_GUID}} | 需生成唯一GUID | 使用 Inno Setup "Tools > Generate GUID" |
优化方法:
解决方案:
--standalone;确认 dist 内存在该 dll;不要打单文件版。PYTHONIOENCODING=utf-8。x64 已弃用(仅 64 位构建需要 64 位安装模式时):改为 ArchitecturesInstallIn64BitMode=x64compatible;32 位构建无需此项。--disable-console 已废弃:改用 --windows-console-mode=disable。_nuitka_temp.exe:在 [Files] 中排除它。| 优化组合 | 体积减少 | 启动提升 | 风险等级 |
|---|---|---|---|
| 基础编译 | 基准 | 基准 | 无 |
+ --lto=yes | 5-10% | 10-20% | PASS: 无 |
| + anti-bloat | 15-25% | - | PASS: 无 |
| + 模块排除 | 20-35% | 5% | PASS: 无 |
| + dist 瘦身 | 25-40% | - | PASS: 无 |
| + 32 位编译 | 40-60% | - | PASS: 无 |
| 全部组合 | 45-65% | 15-25% | PASS: 无风险 |
WARNING: 不建议使用 UPX 压缩,虽然能进一步减小体积,但极易触发杀毒软件误报。
基于 参考项目实战经验优化,助你打造商业级安装包!