分发Python应用时,环境配置和依赖管理常令人头疼,复杂的过程让开发者望而却步。
用户环境五花八门,pip install卡死,依赖冲突崩溃,配置教程写到手酸。
刚开始写公众号的时候,也提过使用 Pyinstaller、py2exe、Nuitka 等方法打包Python应用,但各有各的优势和弊端,依赖问题和打包体积过大问题最为频繁。
最近又发现一款刚刚开源的Python打包工具:PyFuze,也是一个Python三方库,功能及场景应用非常全面。

基于 cosmopolitan 和 uv 构建,并且提供了三种不同的打包模式:
-
• Bundle:捆绑模式(默认,兼容性最高) -
• Online:在线模式(体积小巧) -
• Portable:便携模式(完全独立运行)
兼容GUI应用,跨平台运行无忧,一键将Python项目打包为单个可执行文件。
主要功能
-
• Bundle模式:打包Python解释器和所有依赖,它仅在打包的平台运行,提供最高的兼容性。(运行时要提取到指定路径–unzip-path) -
• Online模式:生成小体积跨平台包,运行时在线下载Python和依赖,需互联网连接,适合轻量分发,适配不同系统。(运行时要提取到指定路径–unzip-path) -
• Portable模式:生成完全独立的跨平台可执行文件,仅支持纯Python项目,无需提取或互联网连接。 -
• 跨平台支持:兼容macOS、Linux、Windows。 -
• 灵活配置:支持自定义入口文件(–entry)、依赖(–reqs)、包含/排除文件(–include/–exclude)、解压路径(–unzip-path)等。 -
• GUI支持:Windows下支持隐藏控制台(–win-gui),适合图形界面应用。
快速使用
PyFuze的安装和使用比较简单,提供了pip安装方式。
pip install pyfuze
或者,可以直接使用 uvx 运行它:
uvx pyfuze -h
用法参数:
Usage: pyfuze [OPTIONS] PYTHON_PROJECT
Options:
--mode TEXT # 打包模式
--output-name TEXT # 输出可执行文件名,默认[项目名称.com]
--entry TEXT # 入口Python文件。当您的项目是一个文件夹时使用。[默认:main.py]
--reqs TEXT # 添加 requirements.txt 文件以指定依赖项
--include TEXT # 包括额外的文件或文件夹(例如 config.ini)(源[::目标]) (可重复)
--exclude TEXT # 排除项目文件或文件夹(例如 build.py)(可重复)
--unzip-path TEXT # 解压路径用于捆绑和在线模式 (默认:/tmp/<项目名称>)
--python TEXT # 添加 .python-version 文件以指定 Python 版本
--pyproject FILE # 包含 pyproject.toml 以指定项目依赖项
--uv-lock FILE # 包含uv.lock文件以锁定依赖项
--win-gui # 在Windows上隐藏控制台窗口
--env TEXT # 添加环境变量
--uv-install-script-windows TEXT # Windows 的 UV 安装脚本 URI(URL 或本地路径)
--uv-install-script-unix TEXT # Unix 系统的 UV 安装脚本 URI(URL 或 本地路径)
-d, --debug # 启用调试日志记录
-v, --version # 显示版本并退出
-h, --help # 帮助信息
示例用法:
便携模式
pyfuze ./examples/simple.py --mode portable --reqs requests
捆绑模式
pyfuze ./examples/complex \
--entry app.py \
--pyproject ./examples/complex/pyproject.toml \
--uv-lock ./examples/complex/uv.lock \
--include ./examples/complex/config.txt \
--exclude ./examples/complex/build.py \
--unzip-path complex \
--win-gui
在线模式,为了提高受限网络中的可靠性,可以使用–uv-install-script-windows、–uv-install-script-unix和–env来指定镜像URL。
pyfuze ./examples/complex \
--entry app.py \
--pyproject ./examples/complex/pyproject.toml \
--uv-lock ./examples/complex/uv.lock \
--include ./examples/complex/config.txt \
--exclude ./examples/complex/build.py \
--unzip-path complex \
--win-gui \
--mode online \
--uv-install-script-windows <uv-windows-installer-mirror-url> \
--uv-install-script-unix <uv-unix-installer-mirror-url> \
--env INSTALLER_DOWNLOAD_URL=<uv-binary-mirror-url> \
--env UV_PYTHON_INSTALL_MIRROR=<python-install-mirror-url> \
--env UV_DEFAULT_INDEX=<pypi-mirror-url>
应用场景
PyFuze的三种模式和跨平台支持让它适用于多种场景:
-
• 内部工具分发:你写了一个 Python 脚本,希望分享给其他同事用,但他们没装 Python,pyfuze 是最快的解决方案之一。 -
• 桌面工具打包:开发了 Pyqt6 的 GUI 工具,用 pyfuze 打包后直接分享给 Windows/macOS 用户运行。 -
• 离线部署:打包成 portable 模式后,即使在不能联网的环境也能独立运行。 -
• 教育分发:分享教学脚本,学生无需配置环境。 -
• 云函数包装:将 Python 代码压缩为单可执行文件后,可快速部署为可调用的 Serverless 函数入口。
写在最后
PyFuze 基于Cosmopolitan/UV,跨平台支持更强,Online模式体积小,Portable模式更无需解压。
相比较成熟的 PyInstaller,兼容性更好,打包速度更快。
用 pyfuze,告别复杂依赖地狱,让你的 Python 项目一键飞天!
借助 pyfuze 打包交付,让你从“代码 -> 可执行程序”只需一行命令,再也不用纠结 Python 安装问题!让 Python 分发像 Go 一样简单!
GitHub 项目地址:https://github.com/TanixLu/pyfuze

● 一款改变你视频下载体验的神器:MediaGo
● 字节把 Coze 核心开源了!可视化工作流引擎 FlowGram 上线,AI 赋能可视化流程!
● 英伟达开源语音识别模型!0.6B 参数登顶 ASR 榜单,1 秒转录 60 分钟音频!
● 开发者的文档收割机来了!这个开源工具让你一小时干完一周的活!
● PDF文档解剖术!OCR神器+1,这个开源工具把复杂排版秒变结构化数据!

(文:开源星探)