【python程序打包教程】PyInstaller一键打包Python程序为独立可执行exe文件

《博主简介》

小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。
更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~
👍感谢小伙伴们点赞、关注!

《------往期经典推荐------》

一、AI应用软件开发实战专栏【链接】

项目名称项目名称
1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】
3.【手势识别系统开发】4.【人脸面部活体检测系统开发】
5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】
7.【YOLOv8多目标识别与自动标注软件开发】8.【基于YOLOv8深度学习的行人跌倒检测系统】
9.【基于YOLOv8深度学习的PCB板缺陷检测系统】10.【基于YOLOv8深度学习的生活垃圾分类目标检测系统】
11.【基于YOLOv8深度学习的安全帽目标检测系统】12.【基于YOLOv8深度学习的120种犬类检测与识别系统】
13.【基于YOLOv8深度学习的路面坑洞检测系统】14.【基于YOLOv8深度学习的火焰烟雾检测系统】
15.【基于YOLOv8深度学习的钢材表面缺陷检测系统】16.【基于YOLOv8深度学习的舰船目标分类检测系统】
17.【基于YOLOv8深度学习的西红柿成熟度检测系统】18.【基于YOLOv8深度学习的血细胞检测与计数系统】
19.【基于YOLOv8深度学习的吸烟/抽烟行为检测系统】20.【基于YOLOv8深度学习的水稻害虫检测与识别系统】
21.【基于YOLOv8深度学习的高精度车辆行人检测与计数系统】22.【基于YOLOv8深度学习的路面标志线检测与识别系统】
23.【基于YOLOv8深度学习的智能小麦害虫检测识别系统】24.【基于YOLOv8深度学习的智能玉米害虫检测识别系统】
25.【基于YOLOv8深度学习的200种鸟类智能检测与识别系统】26.【基于YOLOv8深度学习的45种交通标志智能检测与识别系统】
27.【基于YOLOv8深度学习的人脸面部表情识别系统】28.【基于YOLOv8深度学习的苹果叶片病害智能诊断系统】
29.【基于YOLOv8深度学习的智能肺炎诊断系统】30.【基于YOLOv8深度学习的葡萄簇目标检测系统】
31.【基于YOLOv8深度学习的100种中草药智能识别系统】32.【基于YOLOv8深度学习的102种花卉智能识别系统】
33.【基于YOLOv8深度学习的100种蝴蝶智能识别系统】34.【基于YOLOv8深度学习的水稻叶片病害智能诊断系统】
35.【基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统】36.【基于YOLOv8深度学习的智能草莓病害检测与分割系统】
37.【基于YOLOv8深度学习的复杂场景下船舶目标检测系统】38.【基于YOLOv8深度学习的农作物幼苗与杂草检测系统】
39.【基于YOLOv8深度学习的智能道路裂缝检测与分析系统】40.【基于YOLOv8深度学习的葡萄病害智能诊断与防治系统】
41.【基于YOLOv8深度学习的遥感地理空间物体检测系统】42.【基于YOLOv8深度学习的无人机视角地面物体检测系统】
43.【基于YOLOv8深度学习的木薯病害智能诊断与防治系统】44.【基于YOLOv8深度学习的野外火焰烟雾检测系统】
45.【基于YOLOv8深度学习的脑肿瘤智能检测系统】46.【基于YOLOv8深度学习的玉米叶片病害智能诊断与防治系统】
47.【基于YOLOv8深度学习的橙子病害智能诊断与防治系统】

二、机器学习实战专栏【链接】,已更新31期,欢迎关注,持续更新中~~
三、深度学习【Pytorch】专栏【链接】
四、【Stable Diffusion绘画系列】专栏【链接】
五、YOLOv8改进专栏【链接】持续更新中~~
六、YOLO性能对比专栏【链接】,持续更新中~

《------正文------》

引言

PyInstaller是一款强大的开源工具,它允许开发者将Python应用程序及其所有依赖项打包成为一个独立的、跨平台的可执行文件。对于Windows操作系统而言,这意味着您可以将Python脚本转换为.exe格式,使用户无需安装Python环境就能直接运行您的程序。本文将详细介绍如何使用PyInstaller将Python程序打包成单独的Windows EXE文件。

准备工作

首先,请确保您已经安装了Python环境,并在其中安装了PyInstaller库。可以通过在命令行窗口(如PowerShell或CMD)中执行以下命令来安装PyInstaller:

pip install pyinstaller

在这里插入图片描述

基本打包步骤

步骤一:编写并测试Python程序

确保您的Python程序已经在本地能够正常运行。例如,假设有一个名为my_script.py的主程序文件。

打开命令行界面,通过cd命令切换到包含待打包Python源代码(例如my_script.py)的目录。

步骤二:基本打包

要将my_script.py打包为单个EXE文件,打开命令行并导航至包含该脚本的目录,然后执行以下命令:

pyinstaller -F my_script.py

-F标志指定PyInstaller应该生成一个单一的可执行文件,而不是一个包含所有依赖的文件夹结构。

在这里插入图片描述

步骤三:添加窗口化运行选项(可选)

如果您希望生成的应用程序在运行时没有命令行窗口(仅适用于GUI应用),可以添加-w参数:

pyinstaller -F -w my_script.py

在这里插入图片描述

步骤四:设置程序图标(可选)

若需为生成的EXE文件添加自定义图标,应先准备好.ico格式的图标文件(例如:my_icon.ico),并将它放在与my_script.py同一目录下,然后在打包命令中包含-i选项:

pyinstaller -F -w -i my_icon.ico my_script.py

步骤五:打包数据文件和其他资源

如果程序引用了外部数据文件(如图片、配置文件或字体),您需要确保这些文件也被包含在打包中。可以使用--add-data选项指定文件及其在打包后的位置:

pyinstaller -F -w -i my_icon.ico --add-data "data_file.dat;relative_path_in_dist" my_script.py

这里的--add-data "data_file.dat;relative_path_in_dist"表示将data_file.dat从当前目录复制到输出目录的relative_path_in_dist下。

步骤六:生成和查看输出结果

执行上述命令后,PyInstaller会在当前目录下创建一个名为dist的文件夹,其中包含了打包后的可执行文件。您可以在该目录下找到名为my_script.exe(或其他您设定的程序名称)的文件,双击即可在没有Python环境的Windows系统上运行。您可以直接运行此exe文件以验证是否成功。
在这里插入图片描述

进阶操作

使用spec文件定制打包过程

有时,您可能需要更精细地控制打包过程,例如定义更多的动态链接库、排除不必要的模块或调整输出结构。此时,可以先使用pyi-makespec命令生成.spec文件:

pyi-makespec my_script.py

在这里插入图片描述

编辑生成的.spec文件以进行个性化设置,然后使用该spec文件进行打包:

pyinstaller my_script.spec

.spec文件包含了编译和打包的相关配置信息。编辑此文件,可以添加或修改诸如额外导入模块、隐式导入、收集的数据文件等设置。

更多PyInstaller参数说明

  • -F--onefile:将所有内容打包到一个exe文件中。
  • -D--onedir:创建一个包含exe和所有依赖文件的目录结构。
  • -w--windowed:如果程序是GUI应用,运行时不显示控制台窗口。
  • -i--icon=FILE.ico:指定程序的图标文件。
  • --add-data PATH;DESTPATH:将指定的文件或目录添加到打包结果中,并指定在程序内部访问的相对路径。
  • --hidden-import MODULE_NAME:强制导入未被自动检测到的模块。
  • --exclude-module MODULE_NAME:排除特定模块,防止其被打包。
  • --clean:在重新打包时清理旧的构建文件。

考虑依赖问题

确保所有Python依赖库都已经在当前环境中正确安装。对于某些复杂的应用程序,您可能还需要考虑使用virtualenv或conda创建独立的环境,以隔离和精确控制所需的库版本。

总结起来,PyInstaller大大简化了Python程序的分发流程,使非技术人员也能轻松运行您的应用程序。只需几个简单的命令,即可将Python脚本变成一个独立的Windows EXE可执行文件,便于在任何Windows电脑上部署和运行。同时,其丰富的自定义选项也足以满足大多数项目的打包需求。


如果文章对你有帮助,麻烦动动你的小手,给点个赞,鼓励一下吧,谢谢~~~
好了,这篇文章就介绍到这里,喜欢的小伙伴感谢给点个赞和关注,更多精彩内容持续更新~~
关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/568724.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot论文格式系统

采用springbootmysqlhtmlvue技术 详细运行视频地址B站运行效果视频地址 (1)系统具备用户管理功能,包括用户注册、登录、权限管理等功能。 (2)系统具备格式规范管理功能,包括格式规范创建、编辑、删除等操…

Unity系统学习笔记

文章目录 1.基础组件的认识1.0.组件继承关系图1.1.项目工程文件结构,各个文件夹都是做什么的?1.2.物体变化组件1.2.3.三维向量表示方向1.2.4.移动物体位置附录:使用变换组件实现物体WASD移动 1.3.游戏物体和组件的显示和禁用1.3.1.界面上的操…

面试八股——RabbitMQ

消息丢失问题 消息确认机制 生产者与MQ之间的消息确认: 当MQ成功接收消息后,会返回给生产者一个确认消息。如果在规定时间内生产者未收到确认消息,则任务消息发送失败。 MQ与消费者之间的消息确认: 当MQ成功接收消息后&#…

related_name和related_query_name属性

在Django模型继承中,假如在外键或多对多字段中使用了related_name属性或related_query_name属性,则必须为该字段提供一个独一无二的反向名字和查询名字。但是,这样在抽象基类中一般会引发问题,因为基类中的字段都被子类继承并且保…

Python网络爬虫-详解XPath匹配网页数据

前言 XPath,全称XML Path Language,即XML路径语言,它是一门在XML文档中查找信息的语言。XPath使用路径表达式来选取XML文档中的节点或节点集。这些节点是通过沿着路径(path)或者步(steps)来选取…

从0到1—POC编写基础篇(一)

POC编写基础篇 POC的概念 在网络安全领域中,POC的概念是指"Proof of Concept",也被称为"攻击验证"。它是指安全研究人员或黑客用来证明某个漏洞、弱点或安全问题存在的实证或演示。 网络安全研究人员经常通过开发POC来展示一个漏洞的…

【Node.js】03 —— HTTP 模块探索

🌟Node.js之HTTP模块探索✨ 🌟引言 在网络编程中,HTTP协议无处不在。在Node.js的世界里,我们可以通过内置的http模块来轻松创建HTTP服务器和客户端,实现数据的接收和发送。今天就让我们一起打开这扇门,探索…

SpringBoot + kotlin 协程小记

前言: Kotlin 协程是基于 Coroutine 实现的,其设计目的是简化异步编程。协程提供了一种方式,可以在一个线程上写起来像是在多个线程中执行。 协程的基本概念: 协程是轻量级的,不会创建新的线程。 协程会挂起当前的协…

MATLAB 数据类型

MATLAB 数据类型 MATLAB 不需要任何类型声明或维度语句。每当 MATLAB 遇到一个新的变量名,它就创建变量并分配适当的内存空间。 如果变量已经存在,那么MATLAB将用新内容替换原始内容,并在必要时分配新的存储空间。 例如, Tota…

CentOS-7安装grafana

一、通用设置(分别在4台虚拟机设置) 1、配置主机名 hostnamectl set-hostname --static 主机名2、修改hosts文件 vim /etc/hosts 输入: 192.168.15.129 master 192.168.15.133 node1 192.168.15.134 node2 192.168.15.136 node33、 保持服…

(Oracle)SQL优化案例:组合索引优化

项目场景 项目上的ETL模型里有如下SQL语句。执行速度非常慢,每次只查询200条数据,但却需要20多秒的时间。再加上该SQL查询出的数据同步频率很高,这个速度是完全不能忍受的。 因为项目隐私,所以对表及字段做了改写。 SELECT ID…

SVN小乌龟汉化问题

1.首先确认中文语言包和SVN版本需要一致(点击右键 选择最后一个选项即可查看) 官网链接 点击这个官网链接可以下载对应版本的中文包 2.下载好之后直接无脑下一步安装即可 3.如果还是没有中文,找到这个文件夹,把里面的内容全部删…

SpaceX的核心Fact Sheet

首先给大家分享一组SpaceX的关键数据,让大家对这个神秘公司有个定量认知: 2024年SpaceX预计收入可达130亿美金,同比增长54%,预计2035年可达1000亿美金 SpaceX目前已经处于盈利状态,具体利润规模未知 SpaceX的发射成本…

Kotlin语法入门-类与对象(6)

Kotlin语法入门-类与对象(6) 文章目录 Kotlin语法入门-类与对象(6)六、类与对象1、声明和调用2、get和set3、init函数初始化4、constructor构造函数4.1、主构造函数4.2、二级构造函数4.3、多个构造函数4.4、省略主构造函数并写了次构造函数 5、类的继承与重写5.1、继承5.2、继承…

每天五分钟计算机视觉:基于YOLO算法精确分类定位图片中的对象

滑动窗口的卷积的问题 滑动窗口的卷积实现效率很高,但是它依然不能够输出最精准的边界框,比如下面所示: 我们可以看到蓝色框不论在什么位置都不能很好的确定车的位置,有一个算法是YOLO 算法它能够帮助我们解决这个问题。 YOLO 算法 比如我们的输入图像是100*100,我们会…

TCP相关问题总结

文章目录 TCP连接建立过程1. TCP三次握手2. TCP四次挥手3. TCP为什么是三次握手4. TCP为什么是四次挥手 TCP流量控制TCP拥塞控制1. 为什么需要拥塞控制2. 控制手段 TCP连接建立过程中出现丢包 TCP连接建立过程 1. TCP三次握手 首先client端发出连接请求,并且请求同…

在 VSCode 中运行 C#

文章目录 1.为何选择VSCode而不是VS2.操作步骤2.1 安装.NET2.2 安装扩展插件2.2.1 C#2.2.2 Code Runner 3.新建工程HelloCsharp 1.为何选择VSCode而不是VS VS实在是太“重”了,如果只是写一些简单控制台程序进行调试,则完全没必要 2.操作步骤 2.1 安装…

线性代数 --- 矩阵的对角化以及矩阵的n次幂

矩阵的对角化以及矩阵的n次幂 (特征向量与特征值的应用) 前言: 在上一篇文章中,我记录了学习矩阵的特征向量和特征值的学习笔记,所关注的是那些矩阵A作用于向量x后,方向不发生改变的x(仅有尺度的缩放)。线…

iOS - 多线程-GCD-队列组

文章目录 iOS - 多线程-GCD-队列组1. 队列组1.1 基本使用步骤 iOS - 多线程-GCD-队列组 开发过程中,有时候想实现这样的效果 多个任务并发执行所有任务执行完成后,进行下一步处理(比如回到主线程刷新UI) 1. 队列组 可以使用GC…

探索亚马逊云科技「生成式 AI 精英速成计划」

目录 前言「生成式 AI 精英速成计划」技术开发课程学习课程学习 总结 前言 亚马逊云科技(Amazon Web Services,简称AWS)作为全球领先的云计算服务提供商,一直以来在推动人工智能(AI)领域的发展中扮演着重要…