Skip to content

CQUPTLei/EasyPack

Repository files navigation

English Version:ReadmeEN

EasyPack

一个为 Conda 环境设计的、美观易用的 PyInstaller 图形化打包工具。

简介

pyinstaller -F --paths=E:\anaconda3\envs\yt_dlp_env\Lib\site-packages --python=E:\anaconda3\envs\yt_dlp_env\python.exe  --noconsole  --icon=wx2.ico --name=Downloader test.py

这是一句常用的 pyinstaller打包的命令,但每次都手动输入这一长串命令,很是麻烦。

本项目最初是使用 Tkinter 实现的一个简单的打包程序。现在,它已经演进为一个功能丰富、界面美观的 PyQt6 应用,旨在解决直接使用 pyinstaller 命令行时参数复杂、配置繁琐的问题。

此工具特别为使用 Conda 进行环境管理的 Python 开发者设计,能够自动检测并列出您的 Conda 虚拟环境,极大地简化了路径配置过程。您只需通过几次点击,即可完成对 Python 脚本的打包,无需记忆复杂的命令。

应用截图

主要功能

  • 美观的图形用户界面:采用 PyQt6 构建,提供清爽的左右分栏布局,配置区和日志区一目了然。
  • 主题切换:内置亮色和暗色两套主题,可根据个人喜好一键切换。
  • 深度 Conda 集成
    • 自动扫描并列出所有本地 Conda 虚拟环境。
    • 选择环境后,自动填充该环境的 Python 解释器路径和 site-packages 路径。
  • 智能依赖检查:在构建开始前,自动检查所选环境中是否安装了 pyinstaller,如果未安装,会提示用户一键安装。
  • 全面的打包选项
    • 基本选项:支持单文件 (-F) 和单目录 (-D) 模式切换、自定义程序名称 (--name)、添加图标 (--icon)、隐藏控制台 (--noconsole) 等常用功能。
    • 高级选项:支持通过图形界面添加附加数据文件/目录 (--add-data)、添加隐藏的模块导入 (--hidden-import) 等。
  • 实时日志输出:在独立的线程中执行打包命令,构建过程的日志会实时显示在右侧的日志窗口中,界面不会卡顿。
  • 统一的输出管理:所有 PyInstaller 生成的文件(build 目录、dist 目录、.spec 文件)都会被统一整理到源脚本同级目录下的 output 文件夹中,保持项目根目录的整洁。
  • 便捷操作:打包成功后,“打开输出目录”按钮会被激活,可以一键直达生成的可执行文件所在的位置。

环境要求

在运行此程序之前,请确保您的系统满足以下条件:

  1. Python: 3.8 或更高版本。
  2. PyQt6: pip install PyQt6
  3. Conda: 已安装 Anaconda 或 Miniconda,并且 conda 命令已添加到系统的环境变量 (PATH) 中,可以在命令行中直接调用。

如何使用

直接下载已经打包好的exe文件即可,或者克隆本仓库。

打包步骤

  1. 选择脚本:点击 "Python 脚本" 右侧的 "浏览..." 按钮,选择您想要打包的主 Python 文件。程序名称通常会自动根据文件名填充。
  2. 选择环境:在 "Conda 环境" 下拉菜单中,选择您的项目所使用的虚拟环境。选择后,相关的模块路径会自动填充。
  3. 自定义选项
    • 根据需要修改程序名称或添加图标。
    • 选择打包模式(单文件或单目录)。
    • 在 "高级打包选项" 中添加额外的数据文件或需要强制包含的库。
  4. 预览命令:在右侧的 "最终命令预览" 窗口中检查即将执行的命令是否符合预期。
  5. 开始构建:点击右下角的 "开始构建" 按钮。
  6. 查看日志:在 "构建日志" 窗口中观察实时输出。
  7. 完成
    • 如果构建成功,日志中会以绿色字体显示成功信息,并且 "打开目录" 按钮会变为可用状态。
    • 如果构建失败,日志中会以红色字体显示失败信息,您可以根据日志排查问题。

项目结构

本项目采用了分层设计,将界面、逻辑和主程序分离,便于维护和扩展。

  • main.py

    程序主入口。负责创建 PyQt6 应用实例,初始化主窗口,并将界面 (ui_components.py) 的信号与后台逻辑 (builder.py) 的槽函数连接起来。

  • ui_components.py

    界面层 (View)。包含 PyInstallerGUI 类,使用 PyQt6 负责所有UI控件的创建、布局、样式和主题切换。它只处理界面的显示和用户交互,不包含任何耗时的业务逻辑。

  • builder.py

    逻辑层 (Controller/Worker)。包含 BuildWorker 类,它继承自 QObject 并在一个独立的 QThread 中运行。所有耗时操作(如执行 PyInstaller 命令)都在这里完成,并通过 PyQt 的信号机制与UI层进行安全的通信,从而避免界面冻结。


About

A GUI Packaging Tool for Python Scripts | 一个打包python程序的GUI应用

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages