这是一个基于PySide6的图形化Python源码打包工具,用于将Python源码打包成可通过pip install安装的分发包。
py-build-tool/
├── gui_packager.py # GUI版本主程序文件
├── cli_packager.py # CLI版本主程序文件
├── pyproject.toml # 项目依赖配置
├── README.md # 使用说明
├── README_CLI.md # CLI版本使用说明
├── start.bat # 启动脚本(Windows)
├── start.sh # 启动脚本(Linux/macOS)
├── packages/ # 已打包项目存储目录
└── test_project_with_setup/ # 测试项目
- 双版本支持:提供图形界面(GUI)和命令行界面(CLI)两种操作方式
- 配置文件支持:同时支持
setup.py和pyproject.toml两种配置文件格式 - 智能检测:自动检测项目中存在的配置文件类型
- 优先级处理:当两种文件同时存在时,优先使用
pyproject.toml - 文件创建引导:当项目中没有配置文件时,引导用户创建基础模板
- 包信息展示:自动解析配置文件中的包信息并以中文标签展示
- 多格式打包:生成wheel和sdist两种分发格式
- 独立构建目录:为每个项目创建独立的构建环境
- 项目管理:扫描已打包项目并展示,支持打开目录和删除项目
- 进度跟踪:实时显示打包进度和日志信息
- 详细操作说明:在脚本中包含完整的使用说明和注意事项
- Python 3.9+
- uv (用于创建虚拟环境和管理依赖)
- 克隆或下载本项目
- 安装依赖(使用uv):
uv sync
如果在安装依赖时遇到网络超时问题,可以尝试以下方法:
在命令行中设置超时时间:
set UV_HTTP_TIMEOUT=60
uv sync在终端中设置超时时间:
export UV_HTTP_TIMEOUT=60
uv sync或者在安装时直接指定超时时间:
UV_HTTP_TIMEOUT=60 uv sync双击 start.bat 文件启动应用程序
或者在命令行中运行:
uv run python gui_packager.py在终端中运行:
chmod +x start.sh
./start.sh或者直接运行:
uv run python3 gui_packager.py安装后可以直接运行:
python cli_packager.py或者使用模块方式运行:
python -m cli_packager详细使用说明请查看 README_CLI.md 文件。
- 运行程序后,点击"选择源码路径"按钮选择要打包的Python项目目录
- 工具会自动检测配置文件并显示包信息
- 点击"开始打包"按钮
- 等待打包完成,过程中可以在日志区域查看详细信息
- 打包完成后会弹出提示框,可选择打开输出目录
- 运行CLI工具
- 选择"打包Python项目"
- 输入要打包的Python项目路径
- 工具会自动检测配置文件并显示包信息
- 可选择编辑包信息或直接确认
- 选择构建类型(wheel、sdist或all)
- 等待打包完成
两个版本的脚本中都包含了详细的使用说明和操作指南:
- GUI版本:查看 gui_packager.py 文件开头的文档字符串
- CLI版本:查看 cli_packager.py 文件开头的文档字符串
这些说明包含了完整的功能介绍、使用方法、注意事项等信息。
打包完成后,将在项目目录下的packages目录中生成构建文件:
.tar.gz文件:源码分发包.whl文件:wheel分发包
这两个文件都可以通过pip install命令安装(该项目使用了uv管理依赖, pip 同理操作即可):
uv pip install your-package-name-version.tar.gz
# 或
uv pip install your-package-name-version.whl项目中包含一个简单的测试项目 test_project_with_setup,可以用来测试打包工具:
- main.py: 简单的Python程序
- pyproject.toml: 测试项目的依赖管理文件
- 源码目录中需要包含Python文件
- 生成的包遵循Python Packaging标准
- 打包过程会在当前目录下创建临时的build目录
- 打包时间取决于项目复杂度
如果遇到问题,请检查:
- Python是否正确安装
- 是否有网络连接(用于下载依赖)
- 源码目录是否包含有效的Python文件
- 是否有足够的磁盘空间
- 网络连接是否稳定(可尝试增加超时时间)
- 是否已正确安装所有依赖(包括setuptools)