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

news2024/11/26 2:35:32

目标

项目源码是采用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获取路径,如本例中

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

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

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

获取exe执行文件路径

 application_path = os.path.dirname(sys.executable)

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

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

相关文章

亚马逊运营秘籍:这些冷门知识,你不可不知!

今天,小编将揭秘几个鲜为人知的亚马逊运营冷知识,让我们一同探索并学习吧! 退货佣金扣除:当买家提出退货时,无论是部分退款还是全额退款,亚马逊会直接从卖家账户中扣除20%的佣金,剩余的80%则返还…

Java导出图片到excel

1、例如你有这样一个集合,具体结合你的业务场景 Data public class Student {/*** 姓名*/private String xh;/*** 学号*/private String xm;/*** 照片*/private byte[] zp; }2、相关代码 RequestMapping(value "/quereImgByPkid/{pkid}",method Requ…

【数据分享】地级市-国际互联网用户数(2001-2019年)

数据介绍 在当今数字化时代,互联网已经成为人们生活中不可或缺的一部分。今天,我们为大家带来一份极具价值的数据资源 —— 地级市 - 国际互联网用户数(2001 - 2019 年)。 这份涵盖了近二十年的数据,清晰地展现了各地…

Google上架:PAD的三种分发模式之install-time分发(减小包体上架,适用于包体大于150MB,小于1.15GB的包体)

近期技术服务在升级,抽空写一下关于上架部分的难点,今天来讲一下关于包体过大解决办法中的PAD分发(install-time分发)模式,希望能给好兄弟们带来帮助。 注意!!!这个方法适用于包体大于150MB,小于1.7GB这个区间的包体,不在这个区间的小伙伴可以跳过这个文章,直接私聊…

华为 HCIP-Datacom H12-821 题库 (6)

有需要题库的可以看主页置顶 V群仅进行学习交流 1.转发表中 FLAG 字段中B 的含义是? A、可用路由 B、静态路由 C、黑洞路由 D、网关路由 答案:C 解析: 可用路由用U 表示,静态路由用 S 表示,黑洞路由用 B 表示&#x…

交叉编译 mpfr

文章目录 交叉编译 mpfr1 概述2 源码下载3 交叉编译 交叉编译 mpfr 1 概述 MPFR(Multiple Precision Floating-Point Reliable)是一个用于高精度浮点数计算的开源库,它提供了高精度的浮点数运算和函数库,适用于需要处理大数或高精…

有哪些开学必备好物推荐?2024年盘点推荐五款高性价比数码好物!

新的学期,新的开始。在 2024 年开学季,为了让同学们更好地投入学习和生活,拥有更便捷、高效的体验,我精心测评盘点并推荐五款高性价比数码好物。这些数码好物不仅能满足学习需求,还能为课余生活增添乐趣,是…

35~750kV 变电站无人值守与集中监控的智能运维模式

1、引言 电力行业的快速发展和电网规模的持续扩张,使得传统的变电站运维模式日渐不能满足现代电网对于安全性、可靠性和效率的更高要求。因此,向无人值守与集中监控过渡,已经逐渐成为了整个行业发展的主旋律。 2、关键技术支撑 2.1 自动化监…

CAE小白入门:HyperMesh的使用和帮助

1.1.3 启动 HyperMesh (1) On PC • 从起始菜单&#xff0c;选择 All Programs >Altair HyperWorks (version) > HyperMesh Desktop。 • 右击上述程序创建软件启动快捷方式&#xff0c;点击快捷方式。 (2) On UNIX • 在命令窗口点击 <install directory>/sc…

提升RAG检索回答质量: Shortwave的 4 大优化指南

这篇文章就针对 RAG 检索这个问题提供一些思路, 以 Shortwave 这家 AI 邮件助手公司的设计思路作为案例,真的很难有公司把产品详细技术机制公布出来 本文在01 部分还针对"微调和 RAG,到底选哪个? " , " 有了支持超长上下文窗口的 LLM,是否还需要 RAG"进行…

城市数字化转型中的机遇:中小型企业产品选型指南

随着城市数字化转型的浪潮席卷全球&#xff0c;中小型企业正面临着前所未有的机遇与挑战。如何精准选型&#xff0c;以最小的成本实现最大的效益&#xff0c;成为众多中小型企业关注的焦点。作为一款低代码开发平台&#xff0c;百数为中小型企业提供了一个高效、便捷、低成本的…

Aigtek功率放大器的参数是什么意思

功率放大器是电子电路中的一种重要组件&#xff0c;用于增加输入信号的幅度&#xff0c;以便驱动负载&#xff0c;如扬声器或天线。在设计和使用功率放大器时&#xff0c;有许多关键参数需要考虑&#xff0c;这些参数影响着功率放大器的性能和适用性。下面将详细介绍功率放大器…

视频合并怎么操作?这篇文章告诉你

当你手头有多个片段&#xff0c;想要将它们巧妙地拼接在一起&#xff0c;形成一个完整的故事时&#xff0c;你会怎么做呢&#xff1f; 手动逐帧调整&#xff1f;这显然是个耗时且复杂的过程。幸好&#xff0c;现在有许多优秀的视频合并模板软件可以帮助你轻松实现这一目标。 …

Power Automate向Power Apps传Table数据

Flow返回查询的数据表并返回Apps 场景介绍代码开发Power Automate开发数据库Power Automate调用存储过程 Power Apps开发代码开发 测试 场景介绍 我们通常会使用Flow 查询数据表然后Apps端将表中的数据显示出来&#xff0c;我们怎么来传呢&#xff0c;它自带的response for Po…

Arduino library for proteus 下载 安装 测试

Arduino library include: https://drive.google.com/uc?exportdownload&id1P4VtXaomJ4lwcGJOZwR_25oeon9Zzvwb 第一步&#xff1a; 也可从我的共享网盘当中下载&#xff1a; 第2步&#xff1a;解压文件&#xff1a; 第3步&#xff1a; copy lib and idx 到对应的…

Qt多媒体播放软件

1、项目背景 1.1、技术背景 随着数字媒体的普及&#xff0c;用户对于多媒体播放软件的需求日益增长。Qt作为一个功能强大且跨平台的应用程序开发框架&#xff0c;提供了一套完整的工具和库来支持多媒体内容的处理。Qt Multimedia模块特别为音频和视频播放、录制以及其他相关任…

B树和B+树总结

B树&#xff08;B-Tree&#xff09;和B树&#xff08;B Tree&#xff09;是两种广泛应用于数据库和文件系统中的自平衡树结构&#xff0c;主要用于存储和检索大量有序数据。它们都是多叉树&#xff0c;即每个节点可以有多个子节点&#xff0c;与二叉树不同。下面是对这两种树的…

每日刷题(图论)

P1119 灾后重建 P1119 灾后重建 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路 看数据范围知道需要用到Floyd算法&#xff0c;但是道路是不能直接用的&#xff0c;需要等到连接道路的两个村庄重建好才可以使用&#xff0c;所以这需要按照时间依次加入中转点&#xff0c…

并行数模转换器分辨率的扩展

在并行DAC中存在的一个普遍问题是随着DAC分辨率的提高需要的面积也越来越大。此外&#xff0c;MSB元件值与LSB元件值之比也在增大。我们知道元件的匹配精度随着元件和元件的比值的增大而降低&#xff0c;因此&#xff0c;本节将分析几种能够在元件比和分辨率之间进行权衡的方法…

基于LSTM-AutoEncoder的室内空气质量时间序列数据异常检测

基于LSTM-AutoEncoder的室内空气质量时间序列数据异常检测 LSTM-Autoencoder-Based Anomaly Detection for Indoor Air Quality Time-Series Data DOI: 10.1109/JSEN.2022.3230361 摘要——室内空气质量&#xff08;IAQ&#xff09;数据的异常检测已成为研究的重要领域&…