将 Python 应用打包成 exe 软件,仅需一行代码搞定!

初学 Python 的同学可能会觉得开发一个 exe 软件非常复杂,其实不然,从将 .py 应用程序打包成 .exe 软件,仅仅只需一行代码就可以搞定!

而实现这一强大功能的就是 PyInstaller 工具!它能够将你的 Python 脚本打包成独立的可执行文件,无需安装 Python 解释器或任何第三方库,真正实现"一次打包,处处运行"。

文档地址:pyinstaller.org/

代码仓库:github.com/pyinstaller...

PyInstaller 会读取您编写的 Python 脚本,通过分析代码来发现程序运行所需的所有模块和库。随后收集这些文件的副本(包括活动的 Python 解释器),并将其与您的脚本共同打包至单个文件夹,或可选地生成独立可执行文件。

1. 安装 PyInstaller

安装 PyInstaller 非常简单,只需通过 pip 命令即可完成。推荐在虚拟环境中安装,以避免与系统全局 Python 环境产生冲突。

复制代码
pip install pyinstaller

2. 基础打包命令

使用 PyInstaller 打包一个简单的 Python 脚本仅需一行命令。它会自动分析脚本的导入语句,收集所有依赖项,并生成可执行文件。默认情况下,输出文件位于 dist目录中,你可以直接运行它而无需 Python 环境。

复制代码
pyinstaller your_script.py

3. 常用参数详解

PyInstaller 提供了丰富的命令行参数,允许你自定义打包行为。例如,使用 --onefile参数可以将所有文件打包成单个可执行文件,而 --windowed参数则适用于 GUI 应用,避免显示命令行窗口。掌握这些参数能让你更灵活地控制输出结果。

css 复制代码
pyinstaller --onefile --windowed your_script.py

4. 实战案例:打包一个 GUI 应用

让我们以打包一个简单的 Tkinter GUI 应用为例,演示 PyInstaller 的实际操作。首先创建一个包含窗口和按钮的脚本,然后使用 PyInstaller 生成可执行文件。注意添加 --windowed参数以避免命令行窗口弹出。

scss 复制代码
import tkinter as tk
from tkinter import messagebox

def on_click():
    messagebox.showinfo("Hello", "Welcome to PyInstaller!")

root = tk.Tk()
root.title("Demo App")
button = tk.Button(root, text="Click Me", command=on_click)
button.pack(padx=20, pady=20)
root.mainloop()

打包命令如下:

css 复制代码
pyinstaller --windowed --onefile gui_app.py

最终会在该目录下生成 dist 目录,dist 目录中生成 gui_app.exe 可运行软件!

5、总结

由以上可知,使用 pyinstaller 打包 exe 文件十分简单:仅需一行命令!大家如果有将 python 应用程序打包成 exe 执行文件的需求,不妨一试 pyinstaller!

如果你喜欢本文,欢迎点赞,并且关注我们的微信公众号:Python技术极客 ,我们会持续更新分享 Python 开发编程、数据分析、数据挖掘、AI 人工智能、网络爬虫等技术文章!让大家在Python 技术领域持续精进提升,成为更好的自己!

添加作者微信(coder_0101),拉你进入行业技术交流群,进行技术交流~

相关推荐
FONE_Platform17 小时前
FONE食品饮料行业全面预算解决方案:构建韧性增长
人工智能·算法·全面预算·全面预算管理系统·企业全面预算
月明长歌17 小时前
【码道初阶】【Leetcode94&144&145】二叉树的前中后序遍历(非递归版):显式调用栈的优雅实现
java·数据结构·windows·算法·leetcode·二叉树
DanyHope17 小时前
《LeetCode 49. 字母异位词分组:哈希表 + 排序 全解析》
算法·leetcode·哈希算法·散列表
iAkuya17 小时前
(leetcode) 力扣100 15轮转数组(环状替代)
数据结构·算法·leetcode
杰克尼17 小时前
蓝桥云课-5. 花灯调整【算法赛】
java·开发语言·算法
.小墨迹17 小时前
C++学习之std::move 的用法与优缺点分析
linux·开发语言·c++·学习·算法·ubuntu
努力学算法的蒟蒻17 小时前
day38(12.19)——leetcode面试经典150
算法·leetcode·面试
搬砖魁首17 小时前
ZK-ALU-在有限域上实现乘法和除法
算法·zk·alu·域运算·算术逻辑单元·模乘·蒙哥马利模约简
iAkuya17 小时前
(leetcode)力扣100 17缺失的第一个正数(哈希)
算法·leetcode·哈希算法
断剑zou天涯18 小时前
【算法笔记】树状数组IndexTree
java·笔记·算法