[Python程序打包: 使用PyInstaller制作单文件exe以及打包GUI程序详解]

文章目录

    • 概要
    • Python 程序打包—使用 Pyinstaller 打包 exe
    • Python程序打包—使用Pyinstaller打包GUI程序
    • Python程序打包—使用 Pyinstaller 设置 exe 图标
    • 小结

概要

使用PyInstaller工具将Python程序打包成可执行(EXE)文件。将Python程序打包成EXE的好处之一是,它使得你的应用程序更容易在没有Python解释器的系统上运行,同时还提供了更好的用户体验。

Python 程序打包—使用 Pyinstaller 打包 exe

安装好 Pyinstaller就可以愉快的打包了,这里只需要一条命令即可。

假如 Python 程序的主入口文件是xx.py,那么你的打包命令就是:

pyinstaller xx.py

执行成功后,将会生成两个文件夹:📁build 和 📁dist 。

示例代码

下边的代码使用到了PySimpleGUI库,需要先安装该库,安装命令

pip install pysimplegui
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@文件    :test.py
@说明    :使用Pysimplegui实现一个简单的窗口
@时间    :2023/10/13 09:44:46
@作者    :aliha
@版本    :1.0
'''

import PySimpleGUI as sg  


layout = [
    [sg.Text('请输入内容:')],  
    [sg.InputText()],  
    [sg.Submit('确认'), sg.Cancel('取消')]
] 

window = sg.Window('Demo示例', layout)  

event, values = window.read()   

text_input = values[0]  
sg.popup('你输入了:', text_input)

执行打包

运行打包命令

pyinstaller test.py

最后一行提示 … completed successfully就是成功了,别的不认识也没关系。

在这里插入图片描述

打包结果解读
我们可以清楚的看到 test.py 的同级目录下多出来两个文件夹和一个文件:📁build,📁dist 和 📄test.spec。

• 📁dist:这个是我们打包出来的程序文件;

• 📁build:这个文件夹是程序打包时构建过程生成的,没什么🐦用;

• 📄test.spec:这个文件是打包的中间配置文件。

打包效果展示
点击 📁dist 文件夹内的 test.exe 就可以运行程序,具体效果如下⬇️:

点开记得关闭防护墙,不然会自动抹除生成文件。
在这里插入图片描述

Python程序打包—使用Pyinstaller打包GUI程序

打包GUI程序

示例代码都是 GUI 程序 ,打包后运行时带一个黑框,体验太糟糕,做掉它。

假如你的 Python 程序的主入口文件是xx.py,那么你的打包命令就是:

Pyinstaller -w xx.py

📙注意:如果是和-F参数一起使用,应该是-Fw,而不是-F -w。

示例代码
本代码使用到了PySimpleGUI库,需要先安装该库,安装命令

pip install pysimplegui
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@文件    :test.py
@说明    :使用Pysimplegui实现一个简单的窗口
@时间    :2023/10/13 09:44:46
@作者    :aliha
@版本    :1.0
'''

import PySimpleGUI as sg  

layout = [
    [sg.Text('请输入内容:')],    
    [sg.InputText()],    
    [sg.Submit('确认'), sg.Cancel('取消')]
] 

window = sg.Window('Demo示例', layout)  

event, values = window.read()   

text_input = values[0]  
sg.popup('你输入了:', text_input)

执行打包
运行打包命令

pyinstaller -Fw test.py

打包效果展示
点击 test.exe 就可以运行程序,具体效果如下⬇️:

图片

可以看到,命令行窗口就隐藏掉了

Python程序打包—使用 Pyinstaller 设置 exe 图标

设置程序图标

假如你的 Python 程序的主入口文件是xx.py
图标文件完整路径是x:\xx\xx.ico那么你的打包命令就是:

pyinstaller -i x:\xx\xx.ico xx.py

📡在线图片转 ICO:[https://convertio.co/zh/png-ico/]

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@文件    :test.py
@说明    :使用Pysimplegui实现一个简单的窗口
@时间    :2023/10/13 09:44:46
@作者    :aliha
@版本    :1.0
'''

import PySimpleGUI as sg  


layout = [
    [sg.Text('请输入内容:')],  
    [sg.InputText()],  
    [sg.Submit('确认'), sg.Cancel('取消')]
] 

window = sg.Window('Demo示例', layout)  

event, values = window.read()   

text_input = values[0]  
sg.popup('你输入了:', text_input)

执行打包
运行打包命令:

pyinstaller -i icon.ico test.py

📙:这里icon.ico与test.py在同一个目录下,所以直接写文件名称即可。

在这里插入图片描述

小结

Python 程序打包—使用 PyInstaller 打包 EXE

安装 PyInstaller:

通过以下命令安装 PyInstaller:

pip install pyinstaller

进入项目目录:

在命令行中,进入 Python 项目所在的目录。

运行 PyInstaller:

使用以下命令将 Python 脚本转换为 EXE 文件
pyinstaller your_script.py

生成单文件 EXE:

若要生成单个 EXE 文件,使用 --onefile 选项:
pyinstaller --onefile your_script.py

自定义 EXE 文件名:

使用 --name 选项自定义生成的 EXE 文件名称:
  pyinstaller --onefile --name your_custom_name your_script.py

处理依赖关系:

PyInstaller 通常会自动处理脚本的依赖关系,但可以使用 --add-data 和 --add-binary 选项手动添加依赖项。

测试 EXE 文件:

在“dist”目录中找到生成的 EXE 文件,并确保它在没有 Python 解释器的环境中正常运行。

附加注意事项:

提供了解决一些常见问题的方法,如处理文件路径问题和 DLL 文件缺失。

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

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

相关文章

unittest指南——不拼花哨,只拼实用

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

看完就会,从抓包到接口测试的全过程解析【1500字保姆级教程】

一、为什么抓包 1、从功能测试角度 通过抓包查看隐藏字段 Web 表单中会有很多隐藏的字段,这些隐藏字段一般都有一些特殊的用途,比如收集用户的数据,预防 CRSF 攻击,防网络爬虫,以及一些其他用途。这些隐藏字段在界面…

从裸机启动开始运行一个C++程序(十四)

前序文章请看: 从裸机启动开始运行一个C程序(十三) 从裸机启动开始运行一个C程序(十二) 从裸机启动开始运行一个C程序(十一) 从裸机启动开始运行一个C程序(十) 从裸机启动…

socket can中是如何根据 结构体can_bittiming_const中的字段 计算bitrate的?

在 SocketCAN 中,can_bittiming_const 结构体用于表示 CAN 总线的定时参数,包括位率(bitrate)的计算。can_bittiming_const 包含了许多与位率相关的参数,其中一些参数用于计算实际的位率。 下面是一些与位率计算相关的…

js实现数组的上下移动

思路:上移表示index索引位置减去1,下移表示index索引位置增加1。使用数组的splice方法实现。例如上移:splice(元素当前索引位置,1(删除1个元素),‘元素当前索引位置 - 1’)。

ruoyi 若依框架采用第三方登录

在项目中,前后端分离的若依项目,需要通过统一认证,或者是第三方协带认证信息跳转到本系统的指定页面。需要前后端都做相应的改造,由于第一次实现时已过了很久,再次重写时,发现还是搞了很长时间,…

任意分圆环下的 RLWE:如何产生正确的噪声分布

参考文献: [Con09] Conrad K. The different ideal[J]. Expository papers/Lecture notes. Available at: http://www.math.uconn.edu/∼kconrad/blurbs/gradnumthy/different.pdf, 2009.[LPR10] Lyubashevsky V, Peikert C, Regev O. On ideal lattices and learn…

友思特分享 | Neuro-T:零代码自动深度学习训练平台

来源:友思特 智能感知 友思特分享 | Neuro-T:零代码自动深度学习训练平台 欢迎关注虹科,为您提供最新资讯! 工业自动化、智能化浪潮涌进,视觉技术在其中扮演了至关重要的角色。在汽车、制造业、医药、芯片、食品等行业…

日本服务器访问速度和带宽有没有直接关系?

​  对于许多网站和应用程序来说,服务器的访问速度是至关重要的。用户希望能够快速加载页面、上传和下载文件,而这些都与服务器的带宽有关。那么,日本服务器的访问速度和带宽之间是否存在直接关系呢? 我们需要了解什么是带宽。带宽是指网络…

NVMe-oF E-JBOF设计解析:WD RapidFlex网卡、OpenFlex Data24

OpenFlex Data24 NVMe-oF Storage Platform WD的SN840 NVMeSSD新品并没有太吸引我注意,因为它还是PCIe 3.0接口的,要知道Intel的PCIe 4.0 SSD都已经推出了。 但上面这个NVMe-oF(NVMe over Fabric)EBOF(区别于普通JBO…

中国上市公司漂绿程度及其同构指数(多种测算方法,2012-2022年)

数据简介:20 世纪 90 年代开始,国际上关于绿色市场和绿色管理的学术文献日渐丰富,众多企业积极响应碳排放政策的号召,但其中有多少企业是实实在在的进行碳减排技术创新,又有多少企业打着绿色低碳行为的口号来吸引眼球、…

浏览器缓存、本地存储、Cookie、Session、Token

目录 前端通信(渲染、http、缓存、异步、跨域) HTTP与HTTPS,HTTP版本、状态码 请求头,响应头 缓存 强制缓存:Cache-Control:max-age(HTTP1.1)>Expires(1.0) js、…

【Spring篇】JDK动态代理

目录 什么是代理? 代理模式 动态代理 Java中常用的代理模式 问题来了,如何动态生成代理类? 动态代理底层实现 什么是代理? 顾名思义,代替某个对象去处理一些问题,谓之代理,那么何为动态&a…

力扣 3. 无重复字符的最长子串

题目 题解 方法 public static int lengthOfLongestSubstring(String s) {HashSet<Character> charSet new HashSet<Character>();int i 0,l0,max0;for (int j 0; j < s.length(); j) {while (charSet.contains(s.charAt(j))) {charSet.remove(s.charAt(l…

python -opencv 轮廓检测(多边形,外接矩形,外接圆)

python -opencv 轮廓检测(多边形&#xff0c;外接矩形&#xff0c;外接圆) 边缘检测步骤: 第一步&#xff1a;读取图像为灰度图 第二步&#xff1a;进行二值化处理 第三步&#xff1a;使用cv2.findContours对二值化图像提取轮廓 第三步&#xff1a;将轮廓绘制到图中 代码如下…

科学上网也clone不全PX4?

一、问题 已经科学上网&#xff0c;下载PX4固件 git clone https://github.com/PX4/Firmware.git --recursivePX4大框架 clone 下来了&#xff0c;但是内部的子模块很多没有&#xff0c;报了很多 Fatal&#xff0c;例如 fatal: clone of https://github.com/px4/cyclonedds …

行情分析 - - 加密货币市场大盘走势(11.24)

大饼昨日震荡幅度很小&#xff0c;而今天延续昨日的空头思路。当然如果从MACD日线来看&#xff0c;处于上涨趋势&#xff0c;稳健的可以选择观望等待。空头思路是因为目前EMA21均线和EMA55均线依然保持很远&#xff0c;最近两个月BTC上涨40%&#xff0c;而最近持续保持高位很快…

16个产品经理必备的原型设计软件盘点

原型就像一幅画&#xff0c;比千言万语好。将产品或界面的概念转化为特定的对象是设计过程中的一个关键点&#xff0c;也是每个设计师创作过程的一部分。 每个设计师都应该有一个合适的原型工具。今天&#xff0c;将介绍18种设计原型工具&#xff0c;让我们看看&#xff01; …

HarmonyOS ArkTS 给应用添加通知和提醒(十二)

简介 随着生活节奏的加快&#xff0c;我们有时会忘记一些重要的事情或日子&#xff0c;所以提醒功能必不可少。应用可能需要在指定的时刻&#xff0c;向用户发送一些业务提醒通知。例如购物类应用&#xff0c;希望在指定时间点提醒用户有优惠活动。为满足此类业务诉求&#xf…

元宇宙vr线上展馆在线制作降低开发门槛和成本

让人人都拥有自己的元宇宙空间&#xff0c;说起来就是一个令人亢奋的消息&#xff0c;也是大家所期待的&#xff0c;VR元宇宙空间在线编辑平台是VRARAI元宇宙公司深圳华锐视点自主研发的平台&#xff0c;允许用户在虚拟环境中创建、设计和共享空间&#xff0c;操作简单&#xf…