QPyPack
QPyPack 是一款基于 PyInstaller 与 Nuitka 的跨平台 Python 应用打包构建工具。它将繁琐的命令行打包流程转化为直观的可视化界面操作,无需记忆复杂的终端参数,即可高效生成原生可执行程序。
核心特性
为了降低传统命令行构建的配置成本,解决多平台下环境与依赖冲突问题,QPyPack 深度整合了以下工程化辅助功能:
1. 直观的可视化交互
- 拖放式载入(Drag & Drop):无需手动配置路径,直接将
.py或.pyw源代码文件拖放至软件窗口,系统将自动载入并准备编译。 - 图标自动检索与适配:源程序导入后,系统会自动检索同级目录下的常用图像资产(如
icon.ico/logo.ico/icon.svg/logo.svg)进行格式适配、自动绑定与高清预览。
2. 依赖解析与虚拟环境隔离
- 虚拟环境隔离(Virtualenv):支持一键在临时目录下创建独立的沙盒隔离环境,仅同步应用编译所需的依赖项,从而显著控制并精简最终可执行产物的体积。
- 多维度依赖解析:
- 清单同步:自动检索并优先读取项目目录下的
requirements.txt依赖声明。 - AST 静态扫描:提供辅助的 AST(静态语法树)深度分析,自动提取代码中导入的第三方依赖,精准补齐隐式导入模块(Hidden Imports)。
- 清单同步:自动检索并优先读取项目目录下的
- 内置 PyPI 加速源:预设国内主流镜像加速源,大幅提升沙盒中拉取构建引擎与依赖库的速度。
3. 高级编译参数控制
- 双引擎自适应切换:在图形界面上实现 PyInstaller 与 Nuitka 的灵活切换,参数面板与优化选项将根据所选引擎的特性进行自适应调整。
- 应用元数据注入(Metadata):无需编写繁琐的规格文件,直接在界面输入版本号、公司名和产品描述,工具会自动将这些元数据注入二进制程序属性中(支持 Windows 资源区和 macOS Info.plist 写入)。
- 附加资源可视化管理(Data Files):支持通过列表交互分别导入文件或文件夹,并支持通过双击列表直接修改打包后的相对释放路径(自适应释放路径映射)。
更新日志 (Changelog)
2.5.0
- 安全去耦与跨平台稳定性优化:完全隔离 Windows 的
winreg注册表静态调用,基于动态占位保障 macOS 与 Linux 等非 Windows 环境下的静态加载安全性。 - 自适应图像格式转换引擎:引入全新的
convert_image_to_format弹性图形转译机制。可将 SVG、PNG、JPG 等格式自动适配转换为 Windows.ico与 macOS.icns,内置“macOS sips -> Qt QImage -> Pillow”三重安全降级备份。 - 应用元数据精准转译与写入:在 Windows 系统下自动动态写入
VSVersionInfo元数据,而在 macOS 平台下自动映射生成规范的 Bundle ID(如com.company.appname),为后续的代码签名与公证提供标准数据格式。 - 多维异构构建产物精准提炼:重构底层产物移动(Move)与重置逻辑,精准捕获并转移不同编译模式下产生的文件实体或目录包(如 Windows 的
.exe,macOS 拥有独立目录结构的.app,以及 UNIX 无后缀二进制),杜绝旧版本跨系统提取失败的问题。 - 依赖声明与打包规范优化:更新
pyproject.toml,补充标准 PyPI 分类器(Classifiers)及扩展项目链接(URLs),显式声明setuptools范围防止打包杂质,并将 Pillow 加入核心运行时依赖保障跨平台图标转译。
2.4.6
- 跨平台兼容性适配:修复了底层进程调用中 Windows 平台专有的
creationflags导致非 Windows 系统执行崩溃的致命异常;重构 UNIX 环境(macOS/Linux)下的 Python 解释器静态探测与虚拟沙盒环境分析器;过滤及剔除了平台特异性编译参数(如version-file等)。 - UI 现代化重构与 UX 体验升级:废弃传统密集型排版,采用卡片式容器布局(Card-based Layout)。为复杂的构建参数面板引入“胶囊式子导航(Pill-Tabs)”,在功能丰富度与视觉克制力之间取得平衡;全面解决因低分辨率缩放引发的组件挤压、文本截断等视觉缺陷。
- 多版本内核独立编译沙盒:支持全局指定或浏览任意版本的 Python 解释器(例如兼容极旧的 Python 3.5 内核),程序将在对应的专属内核沙盒中完成代码解析、依赖对齐与独立编译分发,彻底与主控宿主环境解耦。
- 关于界面视觉重构:引入原生交互式动作行(Action Row)替代传统低质感排版,支持无缝调用系统浏览器跳转开源仓库;修复了部分 ICO 图标渲染时的抗锯齿失真问题,保证界面资产高清锐利。
2.4.5
- 源码解析安全修复:移除了在进行依赖扫描(AST 语法树解析)和控制台防闪退代码注入时对源码换行符(CRLF 强转 LF)的干预操作,修复了由此导致的潜在多行字符串解析错误及文件破坏问题。
2.4.4
- 附加资源可视化管理:废弃了易输错的单行文本框输入,引入列表化管理组件。支持通过图形化对话框分别添加“文件”和“文件夹”,并支持双击列表条目直接修改打包后的相对释放路径。
- 路径解析引擎升级:配合新的可视化资源管理,重写了底层存储与引擎构建指令(
--add-data)的拼接逻辑,解决了旧版本中绝对路径被错误切割的解析隐患。
2.4.3
- 自定义依赖清单支持:新增指定依赖文件路径配置。当多个 Python 脚本放置在同一文件夹管理时,可直接为各个脚本绑定不同的依赖清单(例如
requirements1.txt),无需再频繁手动重命名。 - 修复控制台模式下导入及资源读取异常:调整了控制台防闪退代码注入逻辑,将生成的临时入口文件限制在源脚本同级目录下,规避了原版本在系统临时文件夹编译导致本地相对导入(Import)及相对路径资源失效的错误。
- 重构后台分析线程控制逻辑:废弃了不安全的后台线程强制终止方式(
QThread.terminate()),采用解绑信号的处理机制,降低了在快速拖拽或频繁切换脚本时程序偶发的界面卡死、闪退或死锁概率。 - 提升 Nuitka Standalone 打包兼容性:重构了 Nuitka 独立目录打包结束后的提取逻辑,改用动态扫描匹配
.dist产物文件夹,避免因打包入口临时重命名而引发“未定位到有效产物”的构建异常。 - 优化 SVG 图标转换容错:针对 Windows 平台下 PyInstaller 对图标格式的限制,在宿主环境缺少特定图片格式插件时,新增优雅降级与日志提示机制,预防编译器因传入不支持的格式而引发崩溃。
2.4.2
- 编译语法异常诊断:编译失败时,系统将自动扫描并重排完整的构建日志,精准识别源码中的
IndentationError、SyntaxError和TabError语法错误。 - 精准定位错误源:解析并高亮展示发生语法错误的源文件名、行号及错误描述,区分“源码逻辑异常”与“打包工具故障”,避免混淆。
2.4.1
- 模块化配置重构:全面重构设置面板,将参数解耦并分类为“版本信息与元数据”、“编译控制”、“资源与沙盒”、“软件设置”四大模块。
- 自定义归档目录:支持将编译产物输出至全局指定的自定义输出目录,并支持对缺失的多级父目录进行全自动递归创建。
- 并发编译限制:支持手动限制打包引擎并发编译时所能占用的最大 CPU 核心数,避免由于硬件满载引发设备死机。
- 编译提示音效:引入系统级轻量化音频通知,在打包成功或发生异常中断时给予不同的声音提示。
- 编译日志自动保存:任务结束后支持在目标输出路径自动保存运行日志(.log 格式),极大提升异常分析排查的便利性。
2.4.0
- 控制台防闪退机制:在非 GUI 模式打包时,工具会自动在临时脚本尾部注入防闪退控制代码(针对 Windows 平台下双击运行的非交互式程序),提升用户体验。
- 提升文件删除的鲁棒性:重构了临时目录清理机制,引入带重试延时与只读属性解除的
robust_rmtree回收机制,减少因防病毒软件或进程占用导致清理失败的情况。 - 云盘锁状态前置拦截:针对处于云盘同步锁定状态的文件,提供前置 I/O 异常检测,避免打包过程意外被系统挂起。
- 完善引擎参数映射:优化 Nuitka 的插件自动加载逻辑(自适应 PyQt/PySide 家族、numpy, matplotlib, tkinter 等常见重型库),使其配置更加贴合实际运行环境。
- 持续集成与自动发布:新增 GitHub Actions 工作流,推送版本标签自动触发 PyPI 发布,并同步编译运行包上传至 GitHub Release。
快速上手
只需三步,即可完成打包编译:
- 导入源文件:将您的 Python 脚本(
.py或.pyw)拖拽至主界面。 - 配置编译引擎:点击右下角设置按钮,在“编译参数”中选择您想使用的编译引擎与编译模式。
- 执行编译任务:返回主界面点击“开始构建”,即可在下方展开的控制台中实时查看打包进度。
运行启动
在 Python >= 3.8 环境中执行以下命令安装并启动程序:
pip install qpypack
qpypack
预编译版本下载
若不想配置 Python 环境,可直接下载打包好的独立可执行文件: 下载链接
Star History
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file qpypack-2.5.1.tar.gz.
File metadata
- Download URL: qpypack-2.5.1.tar.gz
- Upload date:
- Size: 611.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
510ef18e593f8f9aad822c36ad47737832cbfde95724043681010b669b00161c
|
|
| MD5 |
6d0e5879b72e8c756d21cdabe3ff6318
|
|
| BLAKE2b-256 |
ed55faf2ff9075f85158f2ff590c73111cbe44e2ad26798d48fb272170255d96
|
Provenance
The following attestation bundles were made for qpypack-2.5.1.tar.gz:
Publisher:
publish.yml on Qwejay/QPyPack
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
qpypack-2.5.1.tar.gz -
Subject digest:
510ef18e593f8f9aad822c36ad47737832cbfde95724043681010b669b00161c - Sigstore transparency entry: 2167783424
- Sigstore integration time:
-
Permalink:
Qwejay/QPyPack@abd5f1eac7024d71e0e705613b130a203f5d7b5f -
Branch / Tag:
refs/tags/v2.5.1 - Owner: https://github.com/Qwejay
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@abd5f1eac7024d71e0e705613b130a203f5d7b5f -
Trigger Event:
push
-
Statement type:
File details
Details for the file qpypack-2.5.1-py3-none-any.whl.
File metadata
- Download URL: qpypack-2.5.1-py3-none-any.whl
- Upload date:
- Size: 603.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0dae03ffad47b22dffa42e5c9e1a98583682146d87300ea401959b4ca179f620
|
|
| MD5 |
d18544af6ea662d096597681c0e12f9b
|
|
| BLAKE2b-256 |
ded00120769854ca6d22662f1af564e11e04c1ba87aac1fe27121922a541d24c
|
Provenance
The following attestation bundles were made for qpypack-2.5.1-py3-none-any.whl:
Publisher:
publish.yml on Qwejay/QPyPack
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
qpypack-2.5.1-py3-none-any.whl -
Subject digest:
0dae03ffad47b22dffa42e5c9e1a98583682146d87300ea401959b4ca179f620 - Sigstore transparency entry: 2167783432
- Sigstore integration time:
-
Permalink:
Qwejay/QPyPack@abd5f1eac7024d71e0e705613b130a203f5d7b5f -
Branch / Tag:
refs/tags/v2.5.1 - Owner: https://github.com/Qwejay
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@abd5f1eac7024d71e0e705613b130a203f5d7b5f -
Trigger Event:
push
-
Statement type: