告别依赖地狱!新型Python打包神器,支持三种打包模式,跨平台,零配置!

 

分发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,这个开源工具把复杂排版秒变结构化数据!








(文:开源星探)

发表评论