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

news2024/9/23 11:22:16

文章目录

    • 概要
    • 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 文件缺失。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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

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

java中关键字 volatile 和 synchronized 有什么区别

java中 volatile 和 synchronized 有什么区别?

城市NOA到来时刻,车企密集上车NVIDIA

作者 |张祥威 编辑 |德新 基于双NVIDIA DRIVE Orin实现城市NOA,已是今天国内汽车行业的主流做法。 这款芯片获得广泛的市场认同,用时仅一年多。去年3月, NVIDIA DRIVE Orin正式投产,此后从造车新势力一路来到更多自主品牌的车内&…

初学vue3与ts:路由跳转带参数

index-router <!-- 路由跳转 --> <template><div><div class"title-sub flex"><div>1、用router-link跳转带参数id1&#xff1a;</div><router-link to"./link?id1"><button>点我跳转</button>&…

逆矩阵相关性质与例题

1.方阵的行列式&#xff1a;就是将方阵中的每一个元素转换至行列式中。 1.性质一&#xff1a;转置方阵的行列式等于转置前的行列式。&#xff08;对标性质&#xff1a;行列式与它的转置行列式相等&#xff09; 2.性质二&#xff1a;|ka||a|*k的n次方&#xff0c;n为方阵阶数。 …

MySQL表的操作『增删改查』

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; MySQL 学习 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 &#x1f381;软件版本&#xff1a; MySQL 5.7.44 文章目录 1.创建表1.1.创建时指定属性 2.查看表2.1.查看表结构2.2.查看建表信息…

HTTP/2:多路复用、服务器推送和首部压缩的革命

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

IO多路转接之epoll

目录 一. epoll的实现原理 二. epoll的相关接口 2.1 epoll_create -- 创建epoll模型 2.2 epoll_ctl -- 对epoll模型进行控制 2.3 epoll_wait -- 等待epoll所关注的事件就绪 2.4 epoll相关接口的使用方法 三. Epoll服务器的模拟实现 3.1 EpollServer类的声明 3.2 Epoll…

模拟退火算法应用——求解函数的最小值

仅作自己学习使用 一、问题 需求&#xff1a; 计算函数 的极小值&#xff0c;其中个体x的维数n10&#xff0c;即x(x1,x2,…,x10)&#xff0c;其中每一个分量xi均需在[-20,20]内。因此可以知道&#xff0c;这个函数只有一个极小值点x (0,0,…,0)&#xff0c;且其极小值是0&…

智能对话手机版系统源码:附带完整的搭建教程

移动设备的普及和移动互联网的发展&#xff0c;手机已经成为人们日常生活中最常用的通信工具。因此&#xff0c;针对手机平台开发智能对话系统具有非常重要的意义。首先&#xff0c;手机用户可以更加方便地进行语音对话和信息交互&#xff0c;提高沟通效率。其次&#xff0c;手…

ctfshow sql

180 过滤%23 %23被过滤&#xff0c;没办法注释了&#xff0c;还可以用’1’1来闭合后边。 或者使用--%0c-- 1%0corder%0cby%0c3--%0c--1%0cunion%0cselect%0c1,2,database()--%0c--1%0cunion%0cselect%0c1,2,table_name%0cfrom%0cinformation_schema.tables%0cwhere%0ctable_…

Redis常用操作及应用(一)

一、五种数据结构 二、String结构 1、字符串常用操作 SET key value //存入字符串键值对 MSET key value [key value ...] //批量存储字符串键值对 SETNX key value //存入一个不存在的字符串键值对 GET key //获取一个字符串键值 MGET key [ke…

超好用的制作照片书神器,强到没朋友

在这个快节奏的时代&#xff0c;我们常常忙于工作和生活&#xff0c;而忽略了那些珍贵的回忆。现在&#xff0c;有了超好用的制作照片书神器&#xff0c;你可以轻松地将这些回忆化为实实在在的书册&#xff0c;随时翻阅&#xff0c;感受那份温暖和感动。 接下来给大家推荐一款神…

开源还是闭源(=°Д°=)!!趋势表明,开源技术在诸多领域中日益受到重视

开源和闭源&#xff0c;两种截然不同的开发模式&#xff0c;对于大模型的发展有着重要影响。开源让技术共享&#xff0c;吸引了众多人才加入&#xff0c;推动了大模的创新。而闭源则保护了商业利益和技术优势&#xff0c;为大模型的商业应用提供了更好的保障。 一、开源和闭源的…

长征故事vr互动教育体验系统让师生感同身受

红色文化是贯穿于新民主主义革命、社会主义建设的各个时期&#xff0c;具有深厚的历史价值和文化内涵的先进文化&#xff0c;是高效、优质的教育资源。思政课vr红色数字展馆充分开发和大力弘扬红色文化资源&#xff0c;发挥其独特资源优势和教育功能&#xff0c;应用到教学中&a…

【学习草稿】pid控制基础实现--往水桶注水

pid 1&#xff09;非常通俗易懂的PID控制&#xff08;1&#xff09;https://zhuanlan.zhihu.com/p/37515841 球场上运动至指定地点&#xff08;比例控制&#xff09;&#xff1a;有图【很直观的帮助理解】&有文字分析 2&#xff09;初识PID-搞懂PID概念 https://zhuanlan.…

leetcode刷题日志-11盛最多水的容器

给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能倾斜容器。 思路…

LeetCode.88合并两个有序数组

LeetCode.88合并两个有序数组 1.问题描述2.解题思路3.代码 1.问题描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同…

完美解决:Nginx访问PHP出现File not found.

目录 解决方法一&#xff1a; 解决方法二&#xff1a; 遇到 File not found. 出现的问题解决&#xff1a; 解决方法一&#xff1a; 修改nginx的主配置文件。 vi /etc/nginx/nginx.conf location ~ \.php$ { root html; fastcgi_pass …

人工智能-注意力机制之注意力提示

注意力提示 自经济学研究稀缺资源分配以来&#xff0c;人们正处在“注意力经济”时代&#xff0c; 即人类的注意力被视为可以交换的、有限的、有价值的且稀缺的商品。 许多商业模式也被开发出来去利用这一点&#xff1a; 在音乐或视频流媒体服务上&#xff0c;人们要么消耗注意…