【Python】6 种方法轻松将 Python 脚本打包成 EXE 应用

引言

Python 凭借其简洁的语法和强大的功能,在数据分析、Web 开发、自动化脚本等领域广受欢迎。它“开箱即用”的特性让开发者能够快速构建原型和应用程序。然而,对于最终用户而言,运行 Python 脚本往往意味着需要预先安装 Python 解释器及相关依赖库,这对非技术背景的用户来说无疑增加了门槛。

为了解决这一问题,将 Python 代码打包成独立的可执行文件(通常在 Windows 上是 .exe 文件)成为了一个非常实用的选择。这样,用户无需任何额外环境配置,就能像运行普通软件一样直接启动您的 Python 应用。本文将为您介绍六种主流且有效的 Python 打包工具,助您轻松实现跨平台分发。

1. PyInstaller: 最流行的选择

PyInstaller 是目前最广为人知、社区支持最广泛的 Python 打包工具之一。它能够很好地处理各种复杂的依赖关系,并支持将整个应用及其所需资源打包成一个或多个独立的可执行文件。

  • 特点
    • 支持 Windows, Linux, macOS。
    • 可以打包成单个文件或包含多个文件的目录。
    • 对大多数 Python 包有良好的兼容性。

基本用法: 在项目根目录下打开终端或命令提示符,执行以下命令即可开始打包:

pyinstaller your_script.py 

默认情况下,会在 dist/ 目录下生成可执行文件。添加 --onefile 参数可以打包成单个 exe 文件。

2. cx_Freeze: 跨平台的老牌选手

cx_Freeze 是一个老牌的跨平台打包工具,同样支持将 Python 程序转换为 Windows、macOS 和 Linux 下的原生可执行文件。

  • 特点
    • 高度跨平台。
    • 配置相对灵活。

基本用法: 通过命令行直接打包:

cxfreeze your_script.py --target-dir dist 

这会将生成的可执行文件及相关依赖放入 dist 目录中。

3. py2exe: Windows 平台专用专家

顾名思义,py2exe 是专为 Windows 平台设计的打包工具。如果您确定目标用户只使用 Windows 系统,那么 py2exe 是一个成熟稳定的选择。

  • 特点
    • 专注于 Windows 平台,针对该系统优化良好。
    • 历史悠久,文档和社区经验丰富。

基本用法py2exe 通常需要配合一个 setup.py 脚本来进行更精细的控制。最基本的打包方式是在 setup.py 中配置好选项后,运行:

python setup.py py2exe 

4. py2app: macOS 平台的对应方案

py2exe 类似,py2app 是专门为 macOS 设计的 Python 打包工具。

  • 特点
    • 专为 macOS 优化。
    • 能够创建符合 macOS 规范的应用程序包 (.app)。

基本用法: 同样需要一个 setup.py 脚本。配置完成后,通过以下命令打包:

python setup.py py2app 

5. Nuitka: 编译加速,性能提升

Nuitka 不仅仅是一个打包工具,它首先是一个 Python 到 C++ 的编译器。它可以将 Python 代码先编译成优化过的 C++ 代码,然后再链接成可执行文件。这不仅能生成独立的 exe,有时还能带来一定的性能提升。

  • 特点
    • 兼具打包和编译功能。
    • 可能提高部分程序的执行速度。
    • 支持多种操作系统。

基本用法: 安装后,直接对 Python 脚本进行编译打包:

nuitka --standalone your_script.py 

--standalone 参数用于生成包含所有依赖的独立文件夹。

6. Nuitka + PyInstaller: 强强联合

这是一个进阶技巧,结合了 Nuitka 的编译优势和 PyInstaller 的打包便利性。

  • 思路
    1. 使用 Nuitka 将 Python 脚本编译成 C++ 代码并生成可执行文件(或模块)。
    2. 再利用 PyInstaller 对 Nuitka 生成的结果进行二次打包,进一步优化结构或处理复杂依赖。

示例流程(简化示意):

# 第一步:用 Nuitka 生成独立结构 nuitka --standalone your_script.py # 第二步:可能需要手动调整或使用 PyInstaller 处理特定需求 # 注意:这里的 `your_script.spec` 需要根据实际情况编写或由 PyInstaller 生成并修改 # pyinstaller your_script.spec 
注意: 这种组合使用较为复杂,通常用于对性能和打包结果有特殊要求的场景。PyInstaller 通常可以直接处理纯 Python 项目,不一定需要 Nuitka 预编译。

结语

将 Python 脚本打包成 EXE 文件极大地简化了应用程序的部署和分发过程。从功能全面、易于使用的 PyInstaller,到平台专用的 py2exe 和 py2app,再到追求性能的 Nuitka,每种工具都有其独特的优势和适用场景。

  • 如果您寻求通用性和简便性PyInstaller 通常是首选。
  • 如果您专注于 WindowsmacOS 单一平台,py2exepy2app 提供了针对性的良好支持。
  • 如果您希望获得潜在的性能提升或者尝试不同的技术路线,Nuitka 是一个值得探索的方向。

Read more

Flutter for OpenHarmony: Flutter 三方库 husky 守卫鸿蒙项目的 Git 提交规范(前端工程化必备)

Flutter for OpenHarmony: Flutter 三方库 husky 守卫鸿蒙项目的 Git 提交规范(前端工程化必备)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在 OpenHarmony 项目的团队协作中,我们最怕遇到“带病提交”的代码。比如:某位开发者提交的代码没经过 dart format 美化、或是包含明显的 lint 警告,甚至导致整个鸿蒙工程编译失败。如果在 CI(持续集成)阶段才发现,修复成本就太高了。 husky 是从前端生态圈引进的 Git Hooks 管理神器。它能让你极简地配置 Git 的各个钩子(如 pre-commit),在代码真正提交到远端(AtomGit)之前,强制执行格式化或单元测试,确保入库的代码永远是高质量的。 一、Git Hook 工作流模型 husky 在本地提交阶段建立了一道自动化的“安检门”。 通过 失败

By Ne0inhk

GitHub Copilot 三种模式详解:Ask、Agent、Edit

🌟 前言 GitHub Copilot作为AI编程助手的先驱,为开发者提供了三种不同的交互模式,每种模式都有其独特的优势和适用场景。本文将深入解析这三种模式的特点、使用场景以及如何选择合适的模式来提升开发效率。 📋 目录 * Ask模式:智能问答助手 * Agent模式:自主执行代理 * Edit模式:精准代码编辑 * 三种模式对比分析 * 实际应用场景 * 选择建议 * 总结 🤖 Ask模式:智能问答助手 核心特点 Ask模式是最基础的交互方式,它将GitHub Copilot变成了一个专业的编程顾问。这种模式专注于知识传递和问题解答。 * 🎯 主要功能: * 回答编程概念和技术问题 * 提供代码示例和最佳实践 * 解释复杂的技术概念 * 调试建议和错误分析 * 💡 交互特点: * 对话式交互界面 * 即时问答反馈 * 支持连续深入提问 * 不直接修改项目文件 典型使用场景 👨‍💻 开发者:什么是React的useEffect钩子? 🤖 Copilot:useEffect是Reac

By Ne0inhk
大模型+智能家居解决方案--小米MiLoco部署

大模型+智能家居解决方案--小米MiLoco部署

一、Miloco简介 小米推出了首个“大模型+智能家居”解决方案Xiaomi Miloco,全称为 Xiaomi Local Copilot(小米本地协同智能助手)。 https://gitee.com/xiaomi-miloco/xiaomi-miloco 1、GitHub地址 https://github.com/XiaoMi/xiaomi-miloco Miloco以米家摄像头为视觉信息源,以自研大语言模型MiMo-VL-Miloco-7B为核心,连接家中所有物联网(IoT)设备,框架面向所有人开源。MiMo-VL-Miloco-7B模型基于小米4月发布的MiMo模型调优而来,“天才少女”罗福莉最近加入的正是MiMo模型团队。 这很可能是智能家居的“ChatGPT时刻”,小米AIoT平台截至今年6月已连接的IoT设备数(不含智能手机、平板及笔记本计算机)达9.89亿台,数以亿计的米家摄像头、小爱音箱、台灯等设备都有望用上大模型。 从小米公布的Miloco页面来看,页面主视觉是一个类似于ChatGPT的聊天框,聊天框的左侧具有智能家居设备的导航栏,包括AI中心、模型管

By Ne0inhk
椭偏仪在AR光学薄膜制备中的应用:高折射率与膜厚测量

椭偏仪在AR光学薄膜制备中的应用:高折射率与膜厚测量

随着增强现实(AR)技术在消费电子、医疗及工业等领域的快速发展,市场对高性能光学元件的需求日益迫切。高折射率光学组件是实现设备轻薄化、扩大视场、提升沉浸感的关键。金属氧化物虽具有高折射率、高透过率和良好的稳定性,是理想材料,但其传统制造方法——如气相沉积工艺复杂、成本高昂,溶胶-凝胶法则需高温处理,易导致基板不匹配、表面缺陷等问题,严重制约了AR光学元件的规模化与低成本制造。Flexfilm全光谱椭偏仪可以非接触对薄膜的厚度与折射率的高精度表征,广泛应用于薄膜材料、半导体和表面科学等领域。 为突破这一瓶颈,研究团队研发了基于UV固化的金属氧化物前驱体技术。该技术通过精心设计的配方,可在低温(低至100°C)下形成无机涂层,其折射率可在1.30至2.35范围内精确调控。所得涂层具备原子级光滑表面、低光学损耗及优异的环境稳定性,不仅兼容多种基材与集成工艺,更为实现AR光学元件的高性能、低成本与规模化生产提供了切实可行的创新解决方案。 实验方法 通过系统调节前驱体组成、浓度、溶剂及反应条件,实现对薄膜折射率的精确控制。采用实验设计方法优化配方,确保薄膜高透明、低雾度。材料为无纳米颗粒体

By Ne0inhk