- Add Python Environment Manager with local switching & one-click download - Support Folder Mode (--onedir) and custom contents directory (--contents-directory) - Replace pipreqs with native recursive AST static analysis for dependency scanning - Add Playwright browser download mirror support (npmmirror / huaweicloud) - Upgrade UPX exclusion rules to dynamically exclude Python core & runtime DLLs - Refactor UI dialogs, thread cancellation handling, and polish i18n translations
20 KiB
更新日志 (Changelog)
QPyPack 项目的所有重要变更都将记录在此文件中。
本日志格式基于 Keep a Changelog 规范, 且本项目严格遵循 语义化版本 (Semantic Versioning) 规范。
English Version | 中文
[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 镜像源。
📄 License
Copyright (C) 2026 QwejayHuang. Licensed under the GNU General Public License v3.0.