【2024Python教程】Python文件打包成exe,如果有图片怎么打包?有手就会的超简单教程
目录
pyinstaller模块打包exe(无图片或其他文件打包版)
第一步 安装pyinstaller模块:
第二步 找到需要打包的主程序文件夹
第三步 打包exe文件
第四步 确认exe文件是否可以打开
pyinstaller模块打包exe(有图片打包版--方法一)
第一步 安装pyinstaller模块:
第二步 找到需要打包的主程序文件夹
第三步 打包exe文件
第四步 确认exe文件是否可以打开
pyinstaller模块打包exe(无图片或其他文件打包版)
第一步 安装pyinstaller模块:
在VScode中安装模块:pip install pyinstaller(可以用这个,也可以用下面这个)
pip install -U pyinstaller
安装成功后,长这样:
第二步 找到需要打包的主程序文件夹
命令行cd到Python主程序文件所在的目录
cd 你的绝对文件路径
第三步 打包exe文件
直接进入cmd行,输入以下 命令!!
注意:这里已经进到了主文件夹,所以不是路径了,是你的文件名就行)
pyinstaller -F -w 你的文件名.py
安装成功后长这样:
第四步 确认exe文件是否可以打开
然后就可以去dist文件夹打开你的exe了!!!
打开后长这样
pyinstaller模块打包exe(有图片打包版--方法一)
第一步 安装pyinstaller模块:
在VScode中安装模块:pip install pyinstaller(可以用这个,也可以用下面这个)
pip install -U pyinstaller
安装成功后,长这样:
第二步 找到需要打包的主程序文件夹
命令行cd到Python主程序文件所在的目录
cd 你的绝对文件路径
第三步 打包exe文件
- 第一种方法:写个base64的程序,把图片转成.py文件用于引用()
使用base64编码方式对程序中所使用的图片进行编码操作
import base64def pic2py(picture_names: list, py_name):write_data = []for picture_name in picture_names:filename = picture_name.replace('.', '_')with open("%s" % picture_name, 'rb') as r:b64str = base64.b64encode(r.read())# 注意这边 b64str 一定要加上.decode()write_data.append('%s = "%s"\n' % (filename, b64str.decode()))with open(f'{py_name}.py', 'w+') as w:for data in write_data:w.write(data)# 需要转码的图片:pics = ["./pic.png"]# 将pics里面的图片写到 image.py 中pic2py(pics, 'image')
程序会生成一个image.py的python脚本,里面包含了图片。
然后,在主程序中导入image.py脚本引用,将图片编码在转成图片即可,引用方式如下:
from image import *# 引用示例,pic.png,注意 转码后名字是pic_png
self.root.iconbitmap(image.pic_png)
第二种方法:找个图片转base64的网站,把图片一张一张扔进去https://base64.guru/converter/encode/image 转成base64的码,直接赋值或者复制粘贴到源代码
在源代码中写入image的Base64码即可:
image_data = {"xx.png": "Base64码"
}original_image_upload = tk.PhotoImage(data=image_data["xx.png"])
到此,知道了图片的引用方式,打包py文件就简单了,
直接进入cmd行,输入以下 命令!!
注意:这里已经进到了主文件夹,所以不是路径了,是你的文件名就行)
pyinstaller -F -w 你的文件名.py
安装成功后长这样:
第四步 确认exe文件是否可以打开
然后就可以去dist文件夹打开你的exe了!!!
打开后长这样
pyinstaller模块打包exe(有图片打包版--方法二)
第一步 安装pyinstaller模块:
在VScode中安装模块:pip install pyinstaller(可以用这个,也可以用下面这个)
pip install -U pyinstaller
安装成功后,长这样:
第二步 找到需要打包的主程序文件夹
命令行cd到Python主程序文件所在的目录
cd 你的绝对文件路径
第三步 打包exe文件
使用
pyi-makespec
optionsname.py 创建新的python文件
pyi-makespec options 你的文件.py
具体可以参考这篇文章:python - Pyinstaller and --onefile: How to include an image in the exe file - Stack Overflow
根据文档的描述,有两个不同的命令可以创建规范文件(spec file):
pyinstaller options 你的名字.py
这个命令会自动创建一个规范文件,文件名通常是
myscript.spec
。PyInstaller在打包应用程序时会使用这个自动生成的规范文件。
pyi-makespec options name.py [other scripts ...]
这个命令是专门用于创建规范文件的,不会直接打包应用程序。通过这个命令,可以显式地创建并查看规范文件的内容。
总的来说:
如果只想简单地将Python脚本打包为可执行文件,使用
pyinstaller options.. myscript.py
这个命令就可以了,它会自动处理规范文件。如果需要自定义规范文件,比如添加数据文件、运行时库等,那么可以先使用
pyi-makespec
命令创建规范文件,修改后再执行pyinstaller进行打包。
在options.spec文件里创建以下内容:
# -*- mode: python ; coding: utf-8 -*-a = Analysis(['options', '你的文件.py'],pathex=[],binaries=[],datas=[('你的数据路径', '数据名称')],hiddenimports=[],hookspath=[],hooksconfig={},runtime_hooks=[],excludes=[],noarchive=False,optimize=0,
)
pyz = PYZ(a.pure)exe = EXE(pyz,a.scripts,[],exclude_binaries=True,name='options',debug=False,bootloader_ignore_signals=False,strip=False,upx=True,console=True,disable_windowed_traceback=False,argv_emulation=False,target_arch=None,codesign_identity=None,entitlements_file=None,
)
coll = COLLECT(exe,a.binaries,a.datas,strip=False,upx=True,upx_exclude=[],name='options',
)
在python源文件里加入:
最后直接进入cmd行,输入以下 命令!!
pyinstaller --onefile --windowed --add-data "picture1.jpeg:." --add-data "picture2.png:." your_file.py
注意:这里已经进到了主文件夹,所以不是路径了,是你的文件名就行)
安装成功后长这样:
第四步 确认exe文件是否可以打开
然后就可以去dist文件夹打开你的exe了!!!
打开后长这样
Pyinstaller的打包可选参数说明:
使用格式:pyinstaller -F -w -i x.ico xxx.py
pyinstaller的参数讲解:
第一个参数(必选):
-F:生成单个可执行文件
-D:生成多个可执行文件
第二个参数:
-c:文件执行时携带cmd黑窗口(默认)
-w:文件执行时不启用cmd黑窗口
第三个参数:
-p:自定义需要加载的类路径(基本不用)
第四个参数:
-i x.ico:为可执行文件添加图片,此处x用绝对路径
第五个参数(必选):
xxx.py:需要打包的py文件,xxx为主程序文件名
运行后会生成:
build:内含生成的项目文件
dist:内含生成的exe可执行文件
xxx.spec:打包过程日志
打包图片和音频的方法:
因使用pyinstaller打包exe时,不能打包图片和音频,解决方法:
采用base64动态生成图片和音频
相关文章:

【2024Python教程】Python文件打包成exe,如果有图片怎么打包?有手就会的超简单教程
目录 pyinstaller模块打包exe(无图片或其他文件打包版) 第一步 安装pyinstaller模块: 第二步 找到需要打包的主程序文件夹 第三步 打包exe文件 第四步 确认exe文件是否可以打开 pyinstaller模块打包exe(有图片打包版--方法一…...

mac环境基于llama3和metaGPT自动开发2048游戏
1.准备虚拟环境 conda create -n metagpt python3.9 && conda activate metagpt 2.安装metagpt pip install --upgrade metagpt 3.初始化配置文件 metagpt --init-config 4. 安装llama3 5. 修改配置文件 6.让metegpt自动开发2048游戏 7.经过多轮迭代,最终…...
这些Linux知识可不是靠背就会的!
在信息技术日新月异的今天,Linux以其开源、稳定、高效的特性,逐渐成为了众多专业人士的首选操作系统。然而,关于Linux知识的学习,却常常陷入一个误区——许多人认为,掌握Linux就是死记硬背各种命令和参数。这种观念&am…...

openlayers 绘图功能,绘制多边形,draw组件的使用,一个简单的需求引发的思考(一)
1 需求 使用openlayers绘图功能绘制多边形 2 分析 主要是openlayers中draw功能的使用,感觉比较简单,祖传CV大法搞起来 3 实现 为了方便,就不加载底图了,直接使用绘制功能 2.1 简单实现 <template><div id"ma…...

【Flutter】 TextField限制长度时, 第三方手写输入法、ios原始拼音输入法输入被吞问题
问题描述 TextField限制长度时, 当你的输入字符长度已经到了最大值-1时,使用第三方手写输入法或者ios原生拼音输入法输入liang(什么拼音都行,这里只是举例),输到i那么li都会消失。 原因分析 这是因为第三…...

快递一键查询,只需快递单号,轻松掌握全程物流信息,让您的包裹追踪无忧!
在快节奏的现代生活中,快递已经成为我们生活中不可或缺的一部分。无论是网购的宝贝、亲朋好友寄来的礼物,还是工作中的紧急文件,快递都承载着我们的期待和需要。然而,面对众多的快递公司和复杂的查询流程,如何快速、准…...

【Java探索之旅】继承结构 继承和组合 protected final
文章目录 📑前言一、继承1.1 继承关系的代码块1.2 protected关键字1.3 继承方式1.4 final关键字1.5 继承与组合 🌤️全篇总结 📑前言 在面向对象编程中,继承是一种重要的概念,它允许我们创建一个新类,从现有…...
Ubuntu20.04-SLAM软件安装
目录 安装环境安装问题1.Ubuntu20.04在T440p上的安装问题1.1 安装后提示"x86/cpu:VMX(outside TXT) disabled by BIOS"1.2 ACPI Error:Needed type[Reference],found [Integer] 等错误1.3 ima: Error Communicating to TPM chip1.4 locate命令的安装 2.中文输入法-go…...

OSI七层网络参考模型
一、物理层 我们要发送出去的数据在计算机里只不过是无数的0和1,0或1就叫做比特,物理层就是把这些比特用不同的媒介传输出去,可以用电、光或者其他形式的电磁波来表示和传输信号,数据从网络接口出去以后,会经过不同的网…...

RAG与知识库搭建
Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务,并且需要GPU资源,可以考虑使用UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU,按时收费每卡2.6元,月卡只需要1.7元每小时&…...

MySQL提权之UDF提权
1、前言 最近遇到udf提权,几经周折终于搞懂了。感觉挺有意思的,渗透思路一下子就被打开了。 2、什么是udf提权 udf 全称为user defined function,意思是用户自定义函数。用户可以对数据库所使用的函数进行一个扩展(windows利用…...
【设计模式】结构型设计模式之 组合模式
介绍 这里的组合模式,与之前的设计模式中的"组合关系"完全是两码事,这里的组合模式主要用来处理结构为树形的数据。 组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树状结构来表示…...

我给KTV服务生讲解防抖,他竟然听懂了
端午节三天假期,的最后一天,我和朋友闲来无事,想着去唱会儿歌吧,好久不唱了,于是吃了午饭,石景山就近找了一家KTV,我们团好了卷就过去了。 装修还算不错,很快找到服务生,…...
抽象java入门1.3.1
前言: 本期内容是为了更好补充关于方法(函数)的定义 开始: 函数(function)表示每个输入值对应唯一输出值的一种对应关系。 核心在于:输入值和输出值这两个元素 真的吗? 错&…...

使用Rufus工具制作Ubuntu To Go——很详细
一、准备工作 准备工具: 1、下载Rufus(主角)软件 2、准备一个U盘(制作启动盘,32G足够) 3、准备一个U盘或硬盘(小白128G足够,装Ubuntu系统) 4、下载Ubuntu系统镜像文件 1、下载软件Rufus 先来看…...

Android Jetpack Compose 实现一个电视剧选集界面
文章目录 需求概述效果展示实现思路代码实现总结 需求概述 我们经常能看到爱奇艺或者腾讯视频这类的视频APP在看电视剧的时候都会有一个选集的功能。如下图所示 这个功能其实很简单,就是绘制一些方块,在上面绘制上数字,还有标签啥的。当用户…...
C++多线程并发
文章目录 C多线程并发std::chronoC中的多线程:std::thread主线程等待子线程结束:join主线程分离子线程:detach异步:std::async异步的另一种用法:std::launch::deferredstd::async的底层实现:std::promisest…...

新火种AI|摊上事儿了!13名OpenAI与谷歌员工联合发声:AI失控可能导致人类灭绝...
作者:小岩 编辑:彩云 2024年,OpenAI的CEO Sam Altman就没有清闲过,他似乎一直走在解决麻烦的路上。最近,他的麻烦又来了。 当地时间6月4日,13位来自OpenAI和Google Deep Mind的现任及前任员工联合发布了…...
Web前端后端精通:深度解析与技能进阶
Web前端后端精通:深度解析与技能进阶 在数字时代的浪潮中,Web前端后端技术的精通成为了信息科技领域的核心竞争力。本文将从四个方面、五个方面、六个方面和七个方面深入探讨Web前端后端技术的精髓,带领读者领略这一领域的魅力与挑战。 一、…...

【C语言】09.函数递归
递归其实是⼀种解决问题的方法,在C语言中,递归就是函数自己调用自己。 一、递归的介绍 1.1递归的思想 把⼀个大型复杂问题层层转化为⼀个与原问题相似,但规模较小的子问题来求解;直到子问题不能再被拆分,递归就结束…...

springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...

听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...