# Pack **Repository Path**: yang-xufan/pack ## Basic Information - **Project Name**: Pack - **Description**: 代码文件打包成可执行程序 - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-22 - **Last Updated**: 2025-10-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Python程序打包工具 [English](README.md) | [中文](README_zh.md) 一个通用的程序打包工具,可以将各种编程语言的源代码快速打包成 Windows 可执行文件。计划逐步支持 Python 和 Java,后续也许会支持更多语言。基于多种打包技术实现(如 PyInstaller、Launch4j 等),提供了友好的图形界面。部分代码由 AI 辅助生成。 ## ✨ 功能特点 一个通用的程序打包工具,可以将各种编程语言的源代码快速打包成 Windows 可执行文件。计划逐步支持 Python 和 Java,后续也许会支持更多语言。基于多种打包技术实现(如 PyInstaller、Launch4j 等),提供了友好的图形界面。部分代码由 AI 辅助生成。 ![alt text](image.png) ## 功能特点 - 🎨 简洁现代的图形界面,操作直观 - 📦 支持打包为单个 EXE 文件或文件夹形式 - 🎯 支持自定义程序图标(支持 .ico/.png/.jpg 等多种格式,自动转换) - 📊 实时显示打包进度 - ✅ 智能验证 Python 文件(语法检查、编码检测、文件大小警告) - 🖥️ 可选是否显示控制台窗口 - 🧹 自动清理临时文件 - 📝 完善的日志系统(控制台+文件双输出) - 🛡️ 全局异常捕获和错误处理 - 🔧 统一的配置管理系统 ## 📋 环境要求 - Windows 7 及以上系统 - Python 3.6+ - PyQt5 5.15.0+ - PyInstaller 5.0.0+ - Pillow 10.0.0+ (图片处理) ## 安装 1. 克隆或下载本项目 2. 安装依赖: ```bash pip install -r requirements.txt ``` ## 使用说明 1. 运行程序: ```bash python src/pack/main.py ``` 2. 使用步骤: - 点击"选择Python文件"按钮,选择要打包的 .py 文件 - (可选)点击"选择图标"按钮,为程序添加自定义图标 - 选择打包方式: * exe:生成单个可执行文件,体积较大但便于分发 * 文件夹:生成包含依赖的文件夹,体积较小但需要整个文件夹 - 选择控制台显示选项: * 显示:程序运行时显示控制台窗口,方便调试 * 隐藏:程序运行时隐藏控制台窗口,适合发布 - 点击"开始打包" - 等待打包完成后选择保存位置 ## 📁 项目结构 ``` pack/ ├── src/ │ └── pack/ # 主包 │ ├── __init__.py # 包初始化 │ ├── main.py # 主入口 │ ├── core/ # 核心功能 │ │ ├── __init__.py │ │ ├── packager.py # 打包实现 │ │ ├── validator.py # 文件验证 │ │ └── exceptions.py # 自定义异常 │ ├── gui/ # GUI界面 │ │ ├── __init__.py │ │ └── main_window.py # 主窗口 │ ├── utils/ # 工具函数 │ │ ├── __init__.py │ │ ├── icons.py # 图标处理 │ │ └── logger.py # 日志工具 │ └── config/ # 配置管理 │ ├── __init__.py │ └── settings.py # 全局配置 ├── docs/ # 文档目录 │ └── 优化建议.md # 优化说明文档 ├── temp_builds/ # 临时构建目录(自动创建) ├── .gitignore ├── README.md ├── README_zh.md ├── requirements.txt └── output.log # 日志文件(自动生成) ``` ## ❓ 常见问题 ### 1. 打包失败 - ✅ 检查 Python 文件是否有语法错误(工具会自动检测) - ✅ 确保有足够的磁盘空间 - ✅ 查看 `output.log` 了解详细错误信息 - ✅ 检查文件编码是否为 UTF-8(工具支持 GBK 但建议使用 UTF-8) ### 2. 图标问题 - ✅ 支持多种格式:.ico、.png、.jpg、.jpeg、.bmp、.gif - ✅ 非 .ico 格式会自动转换 - ✅ 建议图标尺寸:256x256 或更小 ### 3. 打包后程序无法运行 - ✅ 检查源程序是否依赖特殊环境 - ✅ 确保所有依赖都已正确安装 - ✅ 如果程序需要控制台输出,请选择"显示控制台"选项 - ✅ 查看打包时的警告信息 ### 4. 文件较大警告 - ℹ️ 超过 10MB 的文件会显示警告,打包时间可能较长 - ℹ️ 这是正常现象,请耐心等待 ## 🔧 开发说明 ### 技术栈 - **界面框架**: PyQt5 - 现代化的 GUI 框架 - **打包引擎**: PyInstaller - 强大的 Python 打包工具 - **图片处理**: Pillow - 图标格式转换 - **日志系统**: Python logging - 双输出日志(控制台+文件) ### 架构特点 - ✅ 多线程处理打包过程,界面不卡顿 - ✅ 完整的错误处理和自定义异常类型 - ✅ 统一的配置管理系统 - ✅ 智能路径识别(支持中文桌面路径) - ✅ 自动临时文件管理 - ✅ 规范的 Python 包结构 ### 代码质量 - ✅ 遵循 PEP 8 代码规范 - ✅ 完善的文档字符串 - ✅ 模块化设计,易于扩展 - ✅ 详细的日志记录 ## 📝 更新日志 ### v0.3.0 (2025-10-28) - 最新版本 **重大优化** - ✨ 添加 `__init__.py` 文件,规范包结构 - ✨ 新增自定义异常类型系统 - ✨ 智能桌面路径识别(支持中文"桌面") - ✨ 配置自动验证机制 - ✨ 窗口图标设置 **功能增强** - 🔧 文件验证大幅增强(文件存在性、大小、编码检测) - 🔧 支持多种图片格式自动转换为 .ico - 🔧 详细的语法错误提示(显示行号) - 🔧 PyInstaller 日志级别优化,减少干扰 **系统改进** - 📊 日志系统完善(控制台+文件双输出) - 🛡️ 全局异常捕获机制 - 🧹 改进临时文件清理策略 - ⚡ 线程安全检查,防止重复打包 ### v0.2.0 (2025-02-23) - 添加控制台显示选项 - 优化界面布局 - 改进进度条显示 - 简化操作流程 ### v0.1.0 (2025-02-23) - 优化项目结构 - 统一配置管理 - 改进错误处理 - 完善日志记录 ## 🎯 特性亮点 ### 智能验证 - 自动检测文件编码(UTF-8/GBK) - 语法错误精确定位到行号 - 文件大小智能警告 ### 用户友好 - 现代化的界面设计 - 实时进度反馈 - 详细的错误提示 - 自动清理临时文件 ### 稳定可靠 - 全局异常捕获 - 完善的日志系统 - 线程安全保护 - 配置自动验证 ## 🗺️ 开发路线图 ### 短期计划 - [ ] 配置保存功能(记住用户选择) - [ ] 最近文件列表 - [ ] 优化错误提示(提供解决方案) ### 中期计划 - [ ] 真实进度显示(解析 PyInstaller 输出) - [ ] 更多打包选项(排除模块、添加数据文件) - [ ] GUI 内日志查看器 ### 长期计划 - [ ] 支持 Java 打包 - [ ] 拖拽文件支持 - [ ] 批量打包功能 - [ ] 主题切换(亮色/暗色) ## 🤝 贡献指南 欢迎提交 Issue 和 Pull Request 来帮助改进这个项目。 ### 如何贡献 1. Fork 本项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ## 📄 许可证 MIT License ## 📧 联系方式 如有问题或建议,欢迎提交 Issue。