Files
QwejayHuang c6fbab2609 v2.9.1 - fix: resolve build size bloat, relax compiler check & remove UPX conflict
- Re-enable anti-bloat mechanism to prevent bloated builds with Pandas and other libraries
- Restrict UPX compression to eliminate packing warnings and conflicts in Nuitka single-file mode
- Remove strict MSVC fallback logic to prevent build failures on systems without Visual Studio
- Relax compiler rules to let Nuitka automatically select and download suitable toolchains
- Switch default packaging strategy to Lite Mode with bytecode and link-time optimizations enabled
2026-09-17 20:50:06 +08:00

586 lines
41 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 更新日志 (Changelog)
QPyPack 项目的所有重要变更都将记录在此文件中。
[English Version](./CHANGELOG_EN.md) | **中文**
--
## [2.9.1] - 2026-09-17
### 修复
- 修复使用 Nuitka 单文件打包时调用 UPX 产生的压缩失败警告与报错问题,恢复 UPX 仅对 PyInstaller 启用的安全策略
- 修复 Nuitka 防膨胀插件未生效导致打包 Pandas 等第三方库时依赖扩散、生成文件体积异常暴增的问题
- 修复未安装 Visual Studio 时因编译器判断失误强行指定 MSVC 导致的构建中断问题
### 优化
- 放开 C 编译器选择限制,无本地 MSVC 环境时交由 Nuitka 自动匹配并下载适用的轻量编译工具链(如 Zig),大幅降低打包失败率并避免文件锁死
- 将默认打包策略调整为精简模式,默认开启字节码与链接优化,并自动剔除测试与调试等冗余模块,显著缩减最终文件体积
--
## [2.9.0] - 2026-09-13
### 新增
- 尝试对主流 AI 框架的自动化数据包与依赖收集支持
- 新增 Paddle/PaddleOCR 安全诊断预警:检测到相关库时主动提示入口脚本需配置 `multiprocessing.freeze_support()`,防止冻结后子进程无限派生耗尽内存
- 新增云同步目录(OneDrive/Dropbox/百度网盘等)检测与沙箱重定向机制,自动重定向构建沙箱至系统临时目录以防止构建文件死锁
- 新增 Nuitka 编译器下载/解压异常自愈机制:检测到杀软拦截或缓存损坏时自动清理损坏目录并输出白名单排查指引
### 修复
- 修复 `is_cloud_sync_path` 关键字列表中误入空字符串导致全路径全局误判为云同步目录的致命问题
- 修复废弃兼容包隔离规则(Backport Shield)计算后未应用到依赖清单写入的问题,确保过滤规则真实生效
- 修复 Nuitka 排除模块参数缺少格式化字符串前缀导致传参失效并产生非法模块名的问题
- 修复内存不足降级重试逻辑中无差别添加 `--low-memory` 参数导致 PyInstaller 引擎崩溃报错的问题
- 修复多文件项目下深度模块依赖未进入全局集合,导致高级依赖收集规则无法覆盖子模块的问题
- 修复 PyInstaller 打包时重复添加 `--add-data` 捆绑图标导致与内部资源重名冲突及重试机制失效的问题
### 优化
- 统一在引擎调度前汇总主入口、子模块扫描、声明依赖与隐式导入的全量依赖集合,消除双引擎内部的冗余重复计算
- 补充完善 Paddle 告警等新增提示信息的本地化翻译词条
- 暂时禁用 Nuitka 默认启用的 `anti-bloat` 插件选项以提高复杂项目编译兼容性
--
## [2.8.6] - 2026-09-11
### 修复
- 修复 AST 依赖扫描导致误闯虚拟环境的问题
- 修复第三方存根包及伪模块(如 `--main--`、`-winreg`、`android`、`org` 等)被误判为依赖并传入 pip 引发 `no such option` 参数解析崩溃的问题
- 修复配置文件初始化与更新时使用字典直接赋值可能触发的潜在冲突,重构为标准的 `config.has_section` / `config.set` API 调用
### 优化
- 引入 Python 合法标识符正则校验(`VALID_IDENTIFIER_REGEX`),从 AST 提取与 pip 安装双层阶段彻底封堵非法包名与命令参数注入
- 内置旧版本与跨平台伪模块黑名单(`PSEUDO_AND_LEGACY_MODULES`),避免将历史兼容或存根模块作为依赖安装
- 优化配置加载容错机制,统一字段读写与小写去重,提升 `config.ini` 的稳定性
--
## [2.8.5] - 2026-09-10
### 修复
- 修复配置文件读取时因键名大小写映射导致 `configparser.DuplicateOptionError` 崩溃的问题
- 修复独立打包(Standalone)环境下点击关于页面链接及 Python 下载链接时抛出 `ModuleNotFoundError: No module named 'webbrowser'` 的问题
### 优化
- 配置解析器开启宽松容错模式(`strict=False`),并在加载与保存时统一做小写预去重,提升配置读写健壮性
- 移除对 Python 标准库 `webbrowser` 的隐式动态依赖,全面改用 Qt 原生 `QDesktopServices.openUrl` 打开系统默认浏览器,提升跨平台兼容性并减少打包产物体积
---
## [2.8.4] - 2026-09-08
### 修复
- 修复 AST 依赖扫描引擎误入虚拟环境与捕获大量幽灵依赖并引发构建卡死/反复切源的问题
- 修复打包构建流程强制进行全目录扫描的问题,恢复遵循“扫描整个文件夹”配置(默认仅分析主入口依赖)
- 修复拖入项目文件夹时可能误将虚拟环境或依赖包内部脚本识别为候选入口的问题
### 优化
- 优化 AST 依赖扫描与项目目录解析性能,引入目录树就地剪枝机制,直接跳过依赖库与构建缓存目录
- 规范配置项增量更新逻辑,确保向映射表中同步默认项时键名统一为小写格式
---
## [2.8.3] - 2026-09-05
### 修复
- 修复因默认包名映射表中存在大小写重复键导致启动崩溃的问题(特别鸣谢 52pojie 论坛的 @zxinyun)
- 优化配置项初始化与写入逻辑,在启动和保存时自动对映射表键名进行小写规整与去重处理
- 增强配置文件解析异常时的回退机制与缺项自动补全的健壮性
---
## [2.8.2] - 2026-09-04
### 修复
- 优化 Python 版本与位数架构识别解析逻辑
- 修正设置面板重置按钮绑定的方法调用
- 优化虚拟环境探测逻辑,移除多余的 pip 导入
- 增强附加数据路径提取及依赖降级规则的边界容错
- 清理冗余无用代码与空函数
---
## [2.8.1] - 2026-09-03
### 修复
- 修复废弃兼容包规则及环境检查时偶发的报错。
- 调整激进的优化参数(`--lto=auto` / `-O`),移除了对底层基础库的误拦截,解决精简模式编译中断/内存溢出问题。
- 纠正排除参数语法,解决包含排除包时 PyInstaller 报未知参数的 Bug。
- 改进控制台暂停注入机制,避免破坏脚本开头的 PEP 263 编码声明与 Shebang。
- 支持带有 `@`、`extras[...]` 等复合规范依赖包的准确识别与安装。
---
## [2.8.0] - 2026-08-31
### 新增
- 支持直接拖入项目文件夹,自动识别工作区路径并关联根目录 `requirements.txt`。
- 增加多入口脚本匹配机制,并在检测到多个候选入口文件时提供选择对话框供用户指定。
- 增加跨层级模块引用检测,在单独载入脚本引用上级目录模块时输出工作区配置与项目导入建议。
### 变更
- 扩展 AST 依赖分析范围至整个项目工作区,提升对子模块内部依赖的识别能力。
- 引入本地模块与附加资源白名单机制,避免将项目内部模块识别为 PyPI 依赖并执行 pip 安装。
- 扩充默认包名映射表与 Auto-Hooks 规则库,为 `pycryptodome`、`nacl`、`soundfile`、`pynput`、`keyring`、`pydantic_core` 等库补充自动收录参数。
- 调整构建搜索路径配置,自动为 PyInstaller 传递 `--paths`(包含工作区与 `src` 目录)并为 Nuitka 设置 `PYTHONPATH`。
- 调整 `requirements.txt` 解析逻辑,支持处理行内注释(`#`)及环境标记(`;`)等语法。
### 修复
- 修复控制台暂停代码插入位置位于 `from __future__` 语句之前导致的 `SyntaxError` 语法错误。
- 修复 `os.walk` 迭代变量名冲突覆盖全局翻译函数引发的 `TypeError: 'list' object is not callable` 异常。
---
### [2.7.14] - 2026-08-26
#### 修复
- **补全中文词条**:修复 2.7.13 版本中部分界面文案、引擎描述及状态提示缺失翻译的问题。
---
### [2.7.13] - 2026-08-26
#### 新增
- **Nuitka 编译优化**:精简模式下默认引入 `--lto=yes` 链接时间优化机制,深度消除未引用符号,大幅压缩编译出的原生二进制体积。
#### 改进
- **代码安全与规范全面升级**:全量通过 Ruff、Flake8 及 Bandit 安全审计,哈希算法升级为更安全的 SHA-256,并增加 Python 下载协议的白名单与异常链校验。
- **日志显示改进**:优化 AST 静态分析与依赖清单的比对逻辑,未提供 `requirements.txt` 时不再冗余输出重复的“自动补齐”项,日志层级更清晰明了。
- **低版本解释器类型兼容**:引入 `__future__.annotations` 延迟注解机制,确保现代 PEP 604 类型提示在 Python 3.8 / 3.9 环境下依然稳定运行不崩溃。
#### 修复
- **修复精简模式BUG**:修复精简模式下打包体积暴增的问题。
- **修复版本比对致命异常**:重构 Backport 拦截规则的版本解析逻辑,修复目标解释器元组与规则字符串直接比对导致的崩溃问题。
- **修复界面多语言刷新遗漏**:修复多语言即时切换时“代码签名”卡片标题未能同步翻译的问题,并清理了翻译字典中的重复键声明。
- **消除进程退出拦截隐患**:清理所有裸 `except:`,避免意外拦截系统中断信号导致子线程无法正常退出。
---
## [2.7.12] - 2026-08-24
### 新增
- **增强常用包与生态映射**:扩充 `DEFAULT_MAPPINGS` ,防止依赖误识别;新增对夸克网盘目录锁定的安全预警。
- **扩展 UI 框架智能识别**:GUI 探测库新增 `qtpy`、`pyglet`、`toga`、`pyqtgraph`,自动适配“隐藏控制台”属性。
- **升级 Python 在线安装适配链**:重构内置解释器安装矩阵与支持等级,适配 Python 3.14+ 现代化运行时生命周期,优化高低版本兼容推荐策略。
### 更改
- **默认启用 Nuitka 防膨胀机制**:Nuitka 引擎默认启用 `anti-bloat` 插件与基础测试模块拦截规则,解决默认兼容模式下打包体积异常暴增的问题。
- **优化自动化资源全量收集**:为 PyInstaller 与 Nuitka 引擎的自动收集规则追加 `pyecharts` 和 `pyppeteer` 支持,避免图表发白与浏览器驱动丢失。
- **强化 UPX 动态库安全白名单**:UPX 排除规则进一步扩充至 `Qt5` 系列、`sqlite3.dll` 及 `libcrypto/libssl`,防止加壳损坏数据库与 HTTPS 网络组件。
### 修复
- **修复云盘与杀软文件死锁导致的构建中断**:移除 Nuitka 的 `--remove-output` 参数,改由 QPyPack 接管清理,解决 OneDrive 同步锁或杀毒软件占用引发的 `FATAL` 致命报错。
- **修复内置标准库误报与冗余安装**:补齐内置标准库清单中遗漏的 `traceback` 与 `warnings`,修复 Python 3.9 等低版本环境下将其误判为第三方依赖并尝试 pip 下载报错的问题。
---
## [2.7.11] - 2026-08-21
### 新增
- **Python 3.13+ 编译器适配**:新增针对 Python 3.13+ 的 Zig 编译后端智能调度支持,规避 MinGW64 在高版本 Python 中被废弃导致的打包失败问题。
- **环境冲突智能诊断与引导**:在构建中断时自动识别编译器版本过低、Windows SDK 缺失等环境冲突特征,提供针对性的解决方案及切换引擎建议。
- **扩展废弃兼容包隔离规则**:在核心依赖治理规则中新增对(Python 3.11+ 内置模块)的动态屏蔽与隔离支持,防止旧依赖冲突。
### 更改
- **重构 Nuitka 编译器决策矩阵**:重构了全版本(Python 3.8 ~ 3.14)及 32/64 位架构的编译器分流策略,精准匹配各版本对 MSVC、Zig 与 MinGW64 的兼容要求。
- **解耦源码语法预检机制**:将源码语法的预检流程改由用户选定的目标 Python 解释器执行,消除了因宿主环境与目标环境版本差异对高版本 Python 语法特性的误判与误杀。
- **强化 UPX 动态链接库保护**:扩充了 UPX 排除名单,自动保护底层核心库,防止因加壳破坏引发运行时 `0xc000007b` 崩溃。
### 修复
- **修复 MSVC 版本不匹配崩溃**:修复了在 Python 3.11+ 环境下命中旧版 MSVC(如 VS 2019)时触发 Nuitka Scons 异常崩溃的问题,未达标时自动降级 MinGW64。
- **修复 Windows SDK 路径误判**:修复了检索 VS 自身目录导致独立的 Windows SDK 被误判为缺失、进而跳过可用 VS 2022 环境的缺陷。
- **修复产物覆盖与目录嵌套异常**:修复了在文件夹模式下遇到旧文件被占用时,强行移动文件导致目标目录发生自我嵌套或产物损坏的问题。
- **补全编译器相关国际化翻译**:补充了编译器检测分流、SDK 路径预警及环境冲突诊断提示的中英文多语言本地化翻译。
---
## [2.7.10] - 2026-08-13
### 新增
- **虚拟环境共享模式**:新增“独立/共享”虚拟环境模式切换。共享模式允许用户指定统一的目录存放环境,支持跨脚本复用依赖,大幅节省磁盘空间。
- **构建前置健康检查**:在正式启动打包前,自动检测系统的可用内存、磁盘空间及 Python 解释器状态,对不满足最低要求的环境提前拦截并给出明确提示。
- **打包配置安全校验**:在构建初期自动验证脚本文件、应用图标、附加资源的路径有效性,以及输出目录的写入权限,避免因配置问题导致打包中途失败。
- **核心参数常量化**:将系统底层的各项阈值(如超时时间、内存/磁盘预警线、重试次数等)统一提取为全局常量,提升项目可维护性。
### 更改
- **强化构建中断机制**:优化了点击“停止构建”时的处理逻辑,优先尝试平滑关闭底层编译进程,仅在超时后强制结束,有效解决了偶尔出现的后台进程残留问题。
- **优化缓存清理流程**:增强了构建结束后的临时文件清理能力。遇到文件被系统或杀毒软件占用时会自动重试,并在日志中集中汇总无法清理的残留文件,方便排查。
- **增强底层执行稳定性**:完善了后台命令执行的错误捕获机制,增加了严格的超时控制和指令缺失处理,消除了界面静默失败或卡死的隐患。
- **改进日志智能分级**:底层日志记录系统现在能够更准确地识别信息级别(常规、警告、错误),为后续的外部日志分析提供更好的支持。
### 修复
- **修复环境检查崩溃**:修复了健康检查模块在特定条件下由于变量未提前初始化而引发的程序闪退问题。
- **修复资源校验异常**:修复了当用户配置的附加资源列表出现无效空数据时,引发的解包错误并导致打包无法启动的问题。
- **修复冗余验证逻辑**:移除了构建流程中对脚本路径重复验证的无效代码。
- **修复重复的权限测试**:修复了创建共享虚拟环境时,对目标目录进行两次重复写入测试的冗余行为。
- **补全缺失的界面翻译**:补充了共享目录相关警告、磁盘空间预警及健康检查错误提示的中英文国际化翻译。
---
## [2.7.9] - 2026-08-12
#### 新增
- **环境诊断与堆栈隔离**:新增打包诊断面板与崩溃 Traceback 捕获,并通过 `[DETAILED_ONLY]` 标签将详细调试信息隔离至详细日志,保持简略日志整洁。
- **虚拟环境故障容错**:清除失效环境失败且保留配置时,自动尝试重命名备份;若重命名失败则提供精准的手动处理指引。
- **内存自适应并发控制**:根据物理空闲内存动态调整 Nuitka 并发核心数,并在低内存环境下自动追加 `--low-memory` 参数。
#### 修复
- **设置配置加载修复**:修复加载配置时“保留本地虚拟环境”复选框状态被错误重置为 `False` 的问题。
- **Nuitka 参数遗漏修复**:补回 Nuitka 打包命令中遗漏的多核并发编译参数。
- **产品名称清理优化**:优化去除版本后缀时的字符串匹配逻辑,防止提取应用名称时发生误删或边界异常。
---
## [2.7.8] - 2026-08-11
#### 新增
- **后台异步清理虚拟环境**:新增后台任务线程,将本地虚拟环境的扫描与删除操作移至后台执行,避免大文件夹清理时主界面冻结卡顿,并精准统计与提示释放的磁盘空间。
- **Pip 权限自动降级重试**:在使用系统 Python 环境安装依赖遇到权限受限(无法写入)时,自动重试并降级为用户模式安装,进一步提高打包成功率。
- **更新AI翻译工具**:现在能够反向补充主程序缺失的字典,并且统一使用英文标签作为日志提示前缀。
#### 修复
- **临时目录残留清理**:修复非沙盒模式下自定义临时路径无法完全删除的问题,优化为强力递归清理,释放残留的编译缓存。
- **界面状态同步修复**:修复拖入新脚本或重置界面时,“保留本地虚拟环境”勾选框状态未被正确复位的问题。
---
## [2.7.7] - 2026-08-09
#### 新增
- **配置写入保护**:引入原子化保存机制,杜绝因断电、死机或磁盘满导致的配置丢失/损坏问题。。
- **提高编码兼容**:升级源码与依赖的读取逻辑,智能兼容 GBK、带 BOM 的 UTF-8 等多种复杂编码,告别乱码闪退。
- **抗杀软拦截**:产物输出阶段加入智能重试机制,有效解决生成瞬间被安全软件锁定而导致的“权限不足”报错。
- **稳定性增强**:增加全局异常日志捕获,并隔离了引擎编译时的环境变量,避免干扰主程序运行。
#### 修复
- 修复在部分 RamDisk(内存盘)环境下打包时,因路径解析引发 [WinError 1] 导致程序崩溃的问题。
- 修复设置面板中的“临时目录”选项未对虚拟环境和 PyInstaller 缓存完全生效的漏洞。
---
## [2.7.6] - 2026-08-08
#### 新增
- **项目沙箱智能感知**:基于脚本路径哈希与 Python 版本/架构生成唯一沙箱标识,加载项目脚本时自动感知识别已有环境并快速复用。
- **虚拟环境一键清理**:设置面板新增项目虚拟环境清理功能,自动扫描项目关联的虚拟环境,提供一键清理功能。
- **AI翻译工具**:新增 `update_locales_ai.py` 现代化 GUI 翻译管理工具,填写大模型API后可自动一键补全更新程序的翻译。
- **窗口大小记忆**:新增窗口大小调整后自己记忆保存功能,重新启动不会丢失。
#### 改进
- **环境自愈与容错降级**:重构虚拟环境有效性校验逻辑,检测到环境损坏或清理失败时自动降级至临时沙箱,确保打包流程零中断。
- **跨平台进程回收**:优化打包任务取消逻辑,Linux / macOS 平台开启独立会话组销毁,解决中断构建时的后台残留进程。
- **环境检测与降级告警**:优化 Python 解释器版本与架构(x64/x86)检测超时处理,增加完善的异常捕获与日志降级提示。
- **界面文案精炼**:重构依赖项与虚拟环境复选框文本,统一清理确认对话框按钮样式与风险提示。
#### 修复
- **国际化词条同步**:补全并同步环境清理、时间戳签名日志及降级告警等新增 UI 词条的简体中文映射。
---
## [2.7.5] - 2026-08-06
#### 新增
- **代码签名与时间戳**:新增 Windows / macOS 产物自动数字签名功能,支持 `.pfx` 自签名证书生成与商业证书配置;Windows 签名集成微软、DigiCert、Sectigo 等权威时间戳服务器盖章支持。
- **macOS DMG 构建**:CI/CD 构建流程支持自动生成 macOS 平台的 `.dmg` 安装包镜像。
#### 改进
- **macOS 默认签名**:macOS 平台默认开启 Ad-hoc 伪签名,解决 M 系列芯片上未签名二进制运行报“应用已损坏”的问题。
- **跨平台构建打包**:重构 CI/CD 自动化构建流程,优化 Linux 平台 PySide6 插件依赖打包与稳定性。
- **系统兼容性矩阵**:调整解释器检测逻辑,动态评估并展示各操作系统与架构的兼容性要求。
- **界面与文案优化**:统一跨平台文件选择框渲染机制;默认开发者更名为“独立开发者”,应用描述更名为“桌面应用程序”。
#### 修复
- **多语言与国际化同步**:补全并同步简体/繁体中文、日、韩、德、法、西、葡、俄等 8+ 种语言的签名日志与文本框右键菜单翻译。
- **进程资源回收**:优化打包任务异常终止时的进程管道与句柄清理逻辑。
---
## [2.7.4] - 2026-08-05
#### 新增
- **打包模式选择**:支持切换「兼容模式」与「精简模式」,兼容模式减少打包出错,精简模式打包后体积更小,构建失败时自动提供重试提示。
- **保留虚拟环境**:支持生成并复用项目本地虚拟环境,不用每次新建环境,大幅提升同一项目的建构速度。
#### 改进
- **Nuitka 策略优化**:精简模式下动态优化 `playwright`、`ttkbootstrap` 等框架的打包参数,进一步缩小产物体积。
- **右键菜单优化**:动态加载 Qt 系统翻译包,完善原生右键菜单与对话框的多语言体验,修复右键菜单底色为黑色的BUG(用了一下午才修复好==!)。
- **UI与视觉统一**:显式配置 Fusion 浅色主题 Palette,统一全局右键菜单样式,优化预设按钮布局与页面边距。
- **AST 依赖扫描**:扫描路径自动排除虚拟打包目录,统一包名小写判重匹配。
- **细节修复**:修复提示音开关响应逻辑;支持子进程独立环境变量设置;加强表格空指针安全校验;更新部分翻译;修复多个细小bug。
## [2.7.3] - 2026-08-04
#### 新增
* **Python 环境管理器**:新增环境管理弹窗,支持本地已安装 Python 的智能识别切换,以及官方/国内镜像源的一键下载安装。
* **文件夹打包模式**:运行模式新增文件夹模式,并支持自定义内部资源目录名。
* **原生 AST 依赖分析**:全面重构依赖扫描机制,使用原生 AST 解析替代 pipreqs,大幅提升隐式依赖分析速度与准确度。
* **Playwright 镜像加速**:新增 Playwright 浏览器驱动的镜像源下载及官方 CDN 自动回退机制。
#### 改进
* **UPX 动态避让**:升级 UPX 压缩策略,自动识别并排除当前 Python 版本的核心 DLL 及 `vcruntime140_1.dll`,防止报错。
* **线程与中断控制**:强化构建取消与清理逻辑,避免线程残留与临时文件锁死。
* **平台兼容与超时保护**:优化 macOS Bundle Identifier 生成逻辑,增加命令执行超时保护机制。
* **界面细节调整**:重构打包模式单选区域,精简关于页面布局与间距,更新版权标识。
* **国际化翻译**:更新部分文字表述及翻译。
---
## [2.7.2] - 2026-08-03
### 改进
* **编译器选择策略调整**:取消之前对 Python 3.13+ 强行硬编码/限制使用 Zig 编译器的逻辑。改由优化后的自适应探测策略:优先检测本地 MSVC / Clang / GCC(MinGW64) 环境,若均未检测到,则转由 Nuitka 自动检测并托管下载兼容的 MinGW-w64 C 编译器工具链。
* **更新 Python 平台兼容性矩阵**:修正设置面板中 Python 解释器选择器的平台指示卡片,更加准确地反映 Nuitka C 后端编译器的自动选择与托管能力。
* **优化构建日志与提示**:当未检测到本地 C 编译器时,显示下载 MinGW-w64 提示;增加对本地编译器的显式识别与反馈。
* **界面提示微调**:优化附加资源列表提示,引导用户使用“导出预设”进行资源配置复用;简化临时目录选项文本,提升 UI 简洁度。
* **恢复默认依赖目录**:将 PyInstaller 单目录模式的依赖文件夹名称恢复为官方默认的 `_internal`,方便同类软件合并放置以共用运行库,减少磁盘占用。
* **优化交互状态保持**:拖入新脚本或重置工作区时,不再清空用户已配置的“自定义输出目录”,提升连续打包时的操作体验。
---
## [2.7.1] - 2026-08-02
### 新增
* **防锁临时目录选项**:设置页面新增“临时目录”位置选择,支持将 Nuitka 中间编译沙盒切换至系统 Temp 目录,解决 OneDrive/杀毒软件锁定文件导致的构建中断问题。
### 改进
* **无缝多版本重构建体验**:打包完成后,切换 Python 解释器或修改配置保存返回时,自动保持脚本载入状态,100% 完整保留图标、版本元数据、隐式导入与附加资源,告别重复拖入与重新加载预设的繁琐流程。
---
## [2.7.0] - 2026-08-01
### 新增
* **Nuitka 自动编译器嗅探与探测**:新增对 `Clang` (LLVM) 与 `Zig`(专为 Python 3.13+ C 后端优化)编译器的自动探测与调用支持,优先与系统 MSVC (`--msvc=latest`) 或 Clang 自动匹配。
* **免配置第三方库打包预设**:内置对 `ttkbootstrap`、`customtkinter`、`playwright`、`moviepy` 等高频报错/丢失资源库的自动化 `--collect-all` 与 `--collect-data` 处理,实现零配置打包。
* **双模式实时日志查看器**:引入“精简模式 (Concise)”与“详细模式 (Detailed)”双视图日志查看器,支持在面板上方一键无缝实时切换、清空与导出日志。
* **智能 Python 平台兼容性提示**:设置页面的 Python 解释器选择器新增动态指示卡片,实时展示对 Windows 7/8/10/11、macOS 及 Linux 的支持状态与官方下载引导。
* **构建容错与降级保护机制**:新增编译前物理内存与磁盘空间评估;遭遇 `ZstdError` (OOM 内存溢出) 时自动触发单线程 (`--jobs=1`) 降级重试;遭遇杀毒软件或系统锁定图标时自动触发剥离图标降级构建。
### 修复
* **源码 BOM 与编码解析兼容**:修复处理包含特殊 BOM (`utf-8-sig`) 或非标准系统回退编码的源码时,AST 模块可能抛出解码异常导致扫描中断的问题。
* **云盘锁定感知与预警**:修复工作所在目录受 OneDrive / Dropbox 等云盘锁定同步时,缺乏明确预警导致打包中断的问题。
* **控制台程序运行时崩溃**:修复因控制台“按回车退出逻辑与源码语法块作用域/闭合冲突引发的崩溃问题。
### 改进
* **AST 解析引擎原生化重构**:将源码隐式依赖扫描由子进程调用重构为同进程原生 AST 模块解析,大幅降低系统资源开销并成倍提升扫描速度。
* **环境检索异步并发加速**:引入多线程异步并发检测机制,对系统内所有候选 Python 环境进行并行嗅探与版本校验,消除软件启动时的 I/O 卡顿。
* **纯矢量 UI 规范与 Emoji 清理**:全面清理侧边栏、Tab 标签及语言列表中的 Emoji 表情,全量升级为 Google Material SVG 矢量图标栈,解决 Linux 及老旧 Windows 系统下的字体回退乱码与排版跳动问题。
* **卡片式动态构建状态反馈**:主面板拖拽区与状态栏支持实时捕获并渲染编译引擎(Nuitka / Scons / PyInstaller)极细粒度的编译进度文本,大幅缓解打包等待焦虑。
* **重构“关于”页面与赞助交互**:全新设计“关于”选项卡,引入可视化 GitHub、PyPI、Issues 动作行按钮及自愿赞助模块。
* **依赖安装弹性降级策略**:重构 pip 依赖构建逻辑,采用统一原子依赖清单;当指定严格版本号(`==`)安装失败时,自动剥离版本约束并拉取最新兼容版本。
* **跨平台原生字节流图标生成**:剥离对 macOS `sips` 命令行工具的强依赖,重构纯 Python 原生字节流拼装机制处理跨平台 `.ico` 与 `.icns` 生成。
* **扩展第三方包名映射库**:扩展内置包名映射字典,补充 `pyside6_addons`、`pyside6_essentials`、`attrs`、`psycopg2-binary` 等常见第三方包映射。
---
## [2.6.2] - 2026-07-27
* **新增界面推移动画**:重构切页逻辑,新增双图层平滑推移过渡动画,消除从设置页返回主界面时的排版闪烁与图标跳动。
* **非打断式通知系统**:全面剥离强侵入式的 `QMessageBox` 阻塞弹窗,改用底部状态栏 Toast 轻量级通知,保障打包工作流连贯。
* **错误日志红色高亮**:遇致命异常、锁定文件或依赖缺失时,自动展开日志面板并以醒目红色 HTML 字体高亮呈现,便于快速定位。
* **GNU gettext 引擎重构**:引入 `TranslationEngine`,将全软件中文硬编码重构为英文原文 Base Key 模式;内置 `zh_CN` 兜底字典,实现零外部依赖运行。
* **全球主流多语言扩展**:新增日 (`ja_JP`)、韩 (`ko_KR`)、法 (`fr_FR`)、德 (`de_DE`)、西 (`es_ES`)、俄 (`ru_RU`)、葡 (`pt_BR`)、繁中 (`zh_TW`) 等语言包支持。
* **智能语言选择器**:设置界面新增语言切换下拉框,支持各国原生母语名称显示(如 Deutsch, Français),并能精准动态识别当前系统默认语言。
* **作用域变量冲突**:修复 `QFileDialog` 解构占位符 `fp, _` 意外覆盖全局翻译函数 `_()` 导致局部作用域崩溃的严重隐患。
* **Qt 动画引擎警告**:修复旧版 geometry 动画作用于 `QStackedLayout` 时抛出 `starting an animation without end value` 的底层警告。
* **PyPI 静态资源打包**:`pyproject.toml` 补全 `locales/*.json` 资源打包规则,確保 `pip install` 安装后多语言功能依然有效。
---
## [2.6.1] - 2026-07-25
* **消除依赖污染**:修复开启“精简模式”时,AST 引擎错误遍历整个父目录的 Bug,解决打包产物被混入无关依赖的问题。
* **构建沙盒隔离**:默认将目标脚本放入独立沙盒中解析,杜绝同目录其他脚本的依赖干扰;同时在 UI 界面新增“允许扫描同目录所有文件”开关。
* **MSVC 智能检测**:引入本地 C++ 编译环境智能嗅探。若系统已安装 MSVC,Nuitka 将自动启用 `--msvc=latest`,优先使用系统原生编译器,提升兼容性并免除耗时的 MinGW 下载。
* **UPX 警告静默**:自动识别并跳过系统核心动态库的 UPX 压缩报错,并小幅提升构建速度。
---
## [2.6.0] - 2026-07-24
### 🎨 交互与 UI 架构重构
* **重构 TAB 导航**:重新分配 TAB 布局,界面更加美观易用。
* **布局与字体精细化**:紧凑化引擎描述框布局;引入跨平台安全字体栈,零侵权风险且全平台优雅回退。
* **高分屏渲染优化**:优先提取 256px 高清图标图层,结合浮点精度绘制,解决 125%~200% 屏幕缩放下的图标模糊。
### 🛠️ 打包引擎与稳定性修复
* **防穿透包名兜底**:内置 C 扩展模块硬编码映射,避免出现找不到包的错误。
* **拦截虚假切源警报**:智能识别 pip 包名错误,避免在镜像源网络正常时误报“主镜像源连接超时”。
* **只读目录权限防护**:控制台防闪退注入脚本改写至系统临时目录,防止因源目录只读导致打包中断。
---
## [2.5.7] - 2026-07-23
* **完善日志右键菜单**:新增清空日志、导出日志功能。
* **下拉菜单与样式优化**:修复非编辑模式下拉框导致的文本重叠 Bug。
* **按钮与布局规格统一**:统一“浏览”、“AST 扫描”等工具按钮的长度和大小。
* **细节提升**:拖拽区域的主标题与副标题均开启自动换行,防止载入长路径文件时挤压主面板。
---
## [2.5.6] - 2026-07-23
* **PIP 双源备份**:新增备用镜像源配置与故障自动重试机制,内置国内主流 PyPI 镜像预设。
* **UI 与视觉重构**:重构 `QComboBox` 悬浮下拉框,统一极简白色主题与滚动体验;Tab 标签栏改为居中对齐,优化窗口最小宽度(710px)。
* **打包稳定性提升**:依赖安装全流程接管,支持主/备源自动降级切源;补全 PyInstaller Windows 版本元数据的 `VarFileInfo` 翻译头字段;优化精简模式下的排除模块策略。
---
## [2.5.5] - 2026-07-22
* **消除误删风险**:优化目录 `build/dist` 智能清理,保护桌面及工作区安全。
* **全沙盒隔离编译**:引入系统级临时目录隔离输出,解决跨盘符与路径割裂异常。
* **修复路径映射与 UX**:构建 cwd 重定向至源码目录以完美解析相对路径;修正 `open_dist` 打开逻辑。
* **修复 pipreqs 崩溃**:解决依赖自动扫描过程中的编码中断问题。
---
## [2.5.4] - 2026-07-18
* **新增精简模式**:自动剔除 `pip`、`unittest` 等冗余库并启用 Nuitka `-OO` 优化,大幅缩减产物体积;配套深度源码静态扫描(至多检索 500 个本地依赖),保障极致精简下的运行稳定性。
* **修复 UPX 假性报错**:当未勾选 UPX 时,显式向引擎传递 `--noupx` 指令,阻断 PyInstaller 静默调用系统 UPX 造成的兼容性报错与日志干扰。
* **修复日志中文乱码**:对底层命令行调用 (`subprocess`) 全面强制追加 `encoding="utf-8"` 参数,解决 Windows 默认编码 (GBK) 解析字节流时引发的控制台乱码。
---
## [2.5.3] - 2026-07-17
* **引擎版本锁定**:支持在高级设置中自定义 Nuitka / PyInstaller / pipreqs 的版本,杜绝上游更新导致的打包失败。
* **动态进度 UI**:主界面大字标题实时同步并轮播当前构建步骤,告别卡顿感与等待焦虑。
* **解决编译崩溃**:全局强制注入 UTF-8 环境,修复 Windows 中文系统下 Nuitka 解析 PyTorch 等库时因 GBK 编码导致的致命报错。
* **高分屏渲染修复**:解决非整数缩放(如 125%)下的字体发虚问题,清理冗余代码消除 DPI 权限报错。
* **依赖扫描自适应**:修复非 UTF-8 编码源码导致 `pipreqs` 分析崩溃的问题,支持自动回退本地编码。
* **智能解释器检索**:合并 `.EXE/.exe` 重复路径,默认选中当前环境,并剥离 `\\?\` 路径前缀以防子进程调用异常。
* **绝对无痕清理**:增加对 `nuitka-crash-report.xml` 与临时 `__pycache__` 的强制回收,绝不污染用户目录。
* **修复图标未更新问题**:修复添加新的打包会导致图标未能更新的问题。
---
## [2.5.2] - 2026-07-15
* **重构编译后端指令集**:将 PyInstaller 与 Nuitka 的底层打包参数生成逻辑重构为两套完全独立、互不干扰的构建分支,消除参数污染隐患。
* **优化 Nuitka 附加资源兼容性**:针对 Nuitka 编译器在处理单个附加数据文件时,若目标相对路径为 `.` 会导致编译崩溃的问题进行了自适应修复 (`os.path.normpath` 路径标准化)。
* **修正 Nuitka 排除模块指令**:将排除特定模块参数修正为 Nuitka 官方标准的 `--nofollow-import-to`。
* **完善 Windows 二进制属性映射**:修正应用描述正确映射至 `--file-description`,应用名称映射至 `--product-name`,补充 `--product-version` 参数。
---
## [2.5.1] - 2026-07-15
* **多平台自动编译**:利用 GitHub Actions,在 windows-latest、macos-latest 和 ubuntu-latest 三种容器中并发运行,自动将产物打包归档并上传至 Tag Release 附件。
* **扁平风格**:清除 Emoji 表情,全面换装扁平化 Google 风格矢量图标。
* **修改版权信息显示**:删除标题栏作者信息,增加状态栏右侧常驻版权声明(自适应隐藏)。
---
## [2.5.0] - 2026-07-15
* **安全去耦与跨平台稳定性优化**:完全隔离 Windows 的 `winreg` 注册表静态调用,保障 macOS 与 Linux 等非 Windows 环境下的静态加载安全性。
* **自适应图像格式转换引擎**:引入全新的 `convert_image_to_format` 弹性图形转译机制,支持 SVG、PNG、JPG 转换为 `.ico` 与 `.icns`。
* **应用元数据精准转译与写入**:Windows 下自动动态写入 `VSVersionInfo` 元数据,macOS 平台自动映射生成规范的 Bundle ID(如 `com.company.appname`)。
* **多维异构构建产物精准提炼**:重构底层产物移动(Move)与重置逻辑,精准捕获 Windows `.exe`、macOS `.app` 以及 UNIX 无后缀二进制。
---
## [2.4.6] - 2026-07-12
* **跨平台兼容性适配**:修复底层进程调用中 Windows 平台专有 `creationflags` 导致非 Windows 系统崩溃的异常;重构 UNIX 环境下的 Python 解释器探测器。
* **UI 现代化重构与 UX 体验升级**:采用卡片式容器布局 (Card-based Layout),引入“胶囊式子导航 (Pill-Tabs)”,全面解决低分辨率缩放下的组件挤压问题。
* **多版本内核独立编译沙盒**:支持全局指定或浏览任意版本的 Python 解释器,并在专属内核沙盒中完成代码解析与独立编译。
* **关于界面视觉重构**:引入原生交互式动作行 (Action Row),支持无缝调用系统浏览器跳转开源仓库;修复 ICO 图标抗锯齿失真问题。
---
## [2.4.5] - 2026-07-06
* **源码解析安全修复**:移除了进行依赖扫描和控制台防闪退注入时对源码换行符 (CRLF 强转 LF) 的干预,修复潜在的多行字符串解析错误及文件破坏问题。
---
## [2.4.4] - 2026-07-06
* **附加资源可视化管理**:引入列表化管理组件,支持通过图形化对话框分别添加“文件”和“文件夹”,并支持双击列表条目修改相對釋放路徑。
* **路径解析引擎升级**:重写底层存储与 `--add-data` 指令拼接逻辑,解决绝对路径被错误切割的解析隐患。
---
## [2.4.3] - 2026-07-01
* **自定义依赖清单支持**:新增指定依赖文件路径配置,支持为不同脚本绑定不同的 `requirements.txt`。
* **修复控制台模式下导入及资源读取异常**:调整控制台防闪退代码注入逻辑,将临时入口文件限制在源脚本同级目录下,规避相对导入 (Import) 失效。
* **重构后台分析线程控制逻辑**:废弃不安全的 `QThread.terminate()`,采用解绑信号的处理机制,降低界面卡死或死锁概率。
* **提升 Nuitka Standalone 打包兼容性**:改用动态扫描匹配 `.dist` 产物文件夹,避免入口重命名导致的构建异常。
---
## [2.4.2] - 2026-06-28
* **编译语法异常诊断**:编译失败时,自动扫描构建日志,精准识别源码中的 `IndentationError`、`SyntaxError` 和 `TabError`。
* **精准定位错误源**:解析并高亮展示语法错误的源文件名、行号及错误描述,区分“源码逻辑异常”与“打包工具故障”。
---
## [2.4.1] - 2026-06-25
* **模块化配置重构**:重构设置面板,将参数分类为“应用元数据”、“编译控制”、“资源与沙盒”、“软件设置”四大模块。
* **自定义归档目录**:支持将编译产物输出至全局指定的自定义目录,并支持对缺失的多级父目录进行自动递归创建。
* **并发编译限制**:支持手动限制打包引擎并发编译时占用的最大 CPU 核心数。
* **编译提示音效与自动日志保存**:引入系统级音频通知,并在任务结束后支持在目标输出路径自动保存 `.log` 运行日志。
---
## [2.4.0] - 2026-06-22
* **控制台防闪退机制**:非 GUI 模式打包时,自动在临时脚本尾部注入防闪退控制代码。
* **提升文件删除鲁棒性**:重构临时目录清理机制,引入带重试延时与只读属性解除的 `robust_rmtree` 回收机制。
* **云盘锁状态前置拦截**:对处于 OneDrive 等云同步锁定状态的文件提供前置 I/O 异常检测。
* **持续集成与自动发布**:新增 GitHub Actions 工作流,推送 Tag 自动触发 PyPI 发布与 GitHub Release 附件上传。
---
## [2.3.5] - 2026-06-17
* **防漏包机制**:重构依赖拉取架构为“三重绝对安全网”(`Requirements -> Pipreqs -> AST 源码强扫`),解决漏包闪退问题。
* **工作区零污染**:配置文件迁移至全局路径 `~/.qpypack/config.ini`,所有中间产物转移至系统 Temp 目录。
* **构建日志规范化**:引入规范的 CI/CD 生命周期状态标签 (`[Init]`, `[Env]`, `[Deps]`, `[Build]`, `[Pack]`)。
* **虚拟环境沙盒智能自愈**:分配隔离 venv 后自动升级 pip,清除老旧模块的大段警告乱码。
---
## [2.3.0] - 2026-06-15
* **UI 框架重构**:由 PyQt5 升级至 PySide6,优化高分屏 (High-DPI) 缩放表现。
* **精简架构**:移除 cx_Freeze,专注打磨 PyInstaller 与 Nuitka 双核心引擎。
* **Nuitka 最佳实践**:单文件模式下强制启用 `zstandard` 压缩;引入 `anti-bloat` 防膨胀插件;自动识别 `tkinter` 探针。
---
## [2.2.0] - 2026-06-14
* **更名与规范**:正式更名为 **QPyPack**,规范化内部沙盒与临时文件命名。
* **超时守护 (Watchdog)**:引入看门狗机制,为关键打包步骤设置超时限制,防止构建无限期挂起。
* **智能命名输出**:自动解析脚本版本,预设输出文件名为 `{Name}_{Version}` 格式。
---
## [1.0.1] - 2026-05-31
* **自定义 PIP 镜像源**:引入 PIP 镜像源配置,默认使用清华大学开源镜像源,支持修改即时生效与 QSettings 持久化存储。
* **构建逻辑统一**:虚拟环境初始化与依赖解析统一走用户配置的自定义 PIP 镜像源。
---
本项目向以下规范靠拢。
[Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/) 规范,
[语义化版本 (Semantic Versioning)](https://semver.org/lang/zh-CN/) 规范。
## 📄 License
---
Copyright (C) 2026 QwejayHuang.
Licensed under the [GNU General Public License v3.0](LICENSE).