将python项目打包成一个可执行文件(包含需要的资源文件)

ops/2024/9/23 4:31:18/

目标

项目源码是采用Python编写,代码中需要读取部分资源文件。现在需要将项目打包成一个exe文件,没有其他任何多余文件,仅1个exe文件。

打包

安装pyinstaller

在自己项目的虚拟环境中,安装pyinstaller。注意一定要是虚拟环境,不然可能会报错。

pip install pyinstaller

在这里插入图片描述

打包命令

pyinstaller --onefile  -w -i ./logo.ico   --add-data "xxxx/;xxxx/" --name="exe文件名称" .\main.py

参数解释:
–onefile: 将所有依赖项打包到一个单独的可执行文件中。这意味着所有的资源文件、库文件和其他依赖项都将被打包进同一个 .exe 文件中。
-w: 隐藏控制台窗口
-i: 指定图标文件为当前目录下的 logo.ico,这样打包成的程序就会有指定的logo
–add-data: 资源文件或文件夹,我这里是文件夹xxxx。
–name: exe文件名称
.\main.py: 要打包的python脚本
打包成功后显示日志,并在项目的dist文件夹内生成exe文件,且图标为指定的logo.ico,如果多次打包,logo没变,是因为有缓存!可以换个–name或清理缓存解决
在这里插入图片描述

部分源码

对于打包进exe的资源文件,源码中采用sys._MEIPASS获取路径,如本例中

python">def get_resource_path(relative_path):""" 获取资源文件的绝对路径 """# 如果应用程序是被打包过的,则 base 路径为 sys._MEIPASSbase_path = sys._MEIPASS + "\\xxxx/"return os.path.join(base_path, relative_path)

如果需要窗口也显示小图标logo.则需要将logo.ico文件也放入xxxx下,一起打包入exe代码中。并在代码中指定:

python">    base_path = sys._MEIPASS + "\\xxxx/"root.iconbitmap(os.path.join(base_path, "logo.ico"))

获取exe执行文件路径

python"> application_path = os.path.dirname(sys.executable)

http://www.ppmy.cn/ops/105026.html

相关文章

每天一个数据分析题(五百一十五)- 朴素贝叶斯分类器

朴素贝叶斯分类器是一系列以假设特征之间强(朴素)独立下运用贝叶斯定理为基础的简单概率分类器。该分类器模型会给问题实例分配用特征值表示的类标签,类标签取自有限集合。下列选项不属于朴素贝叶斯分类器特点的是? A. 面对孤立的…

3.2 Browser -- useColorMode

3.2 Browser – useColorMode https://vueuse.org/core/useColorMode/ 作用 可以自动持久化的响应式颜色主题模式。 官方示例 import { useColorMode } from vueuse/coreconst mode useColorMode() // Ref<dark | light>默认情况下&#xff0c;它将使用usePreferre…

Spel注入漏洞分析

文章目录 SPEL注入SPEL漏洞案例CVE-2022-2297EXP SPEL注入 SPEL是Spring框架中的一种表达式语言&#xff0c;用于在Spring配置中动态计算值。它提供了一种简洁的语法&#xff0c;用于访问和操作对象的属性、调用方法、进行数学计算、逻辑运算等。允许开发者在Spring应用程序中…

Java基于微信小程序的超市购物管理系统

1 简介 Java基于微信小程序的超市购物管理系统&#xff0c;此超市购物系统利用当下成熟完善的springboot框架&#xff0c;使用跨平台的可开发大型商业网站的Java语言&#xff0c;以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了收货地址管理、购物车管理、…

JVM(Java虚拟机)

Java的“一次编写&#xff0c;处处运行”主要得益于Java的设计理念和Java虚拟机&#xff08;JVM&#xff09;的存在。 JVM&#xff08;Java Virtual Machine&#xff09;是Java虚拟机的简称&#xff0c;它是运行所有Java程序的抽象计算机。也就是说&#xff0c;JVM是一个能够运…

世界复合医学杂志社世界复合医学编辑部2024年第4期目录

论著 苏子降气汤联合三子养亲汤治疗痰浊壅肺型慢性阻塞性肺疾病急性加重期的临床疗效 周芹;周磊; 1-437 天麻钩藤汤加减联合依那普利叶酸片对原发性高血压患者血压水平与中医证候积分的影响 邹文博;王世雄; 5-8 伏诺拉生联合康复新液治疗反流性食管炎的临床研究 孙…

浅谈安科瑞系能源配套产品在美特新材料光储充一体化项目上的应用

项目背景&#xff1a; 项目名称&#xff1a;湖南美特新材料科技有限公司光储充一体化项目工程总承包&#xff08;EPC&#xff09; 建设地点&#xff1a;长沙市望城经济技术开发区腾飞路二段568号 建设规模和主要内容&#xff1a; 建设规模:储能装机容量7.5MW/16.054MWh&#x…

如何在忘记密码或 ID 的情况下解锁 iPhone 15

您是否曾经因为忘记了 iPhone 密码而陷入困境&#xff0c;或者您是否多次错误地输入了屏幕时间密码并发现自己被锁定在 iPhone 之外&#xff1f; 被锁定和拒绝访问您的 iPhone 可能很常见&#xff0c;尤其是在您尚未配置 Face ID 的情况下。或者&#xff0c;如果 Face ID 无法正…