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

目标

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

打包

安装pyinstaller

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

bash 复制代码
pip install pyinstaller

打包命令

bash 复制代码
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._MEIPASS
    base_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)
相关推荐
MATLAB代码顾问18 分钟前
Python实现蜂群算法优化TSP问题
开发语言·python·算法
yaodong51830 分钟前
不会Python也能数据分析:Gemini 3.1 Pro解决办公问题的SQL自动生成
python·sql·数据分析
jinanwuhuaguo39 分钟前
(第三十三篇)五月的文明奠基:OpenClaw 2026.5.2版本的文明级解读
android·java·开发语言·人工智能·github·拓扑学·openclaw
BU摆烂会噶43 分钟前
【LangGraph】持久化实现的三大能力——时间旅行
数据库·人工智能·python·postgresql·langchain
xmjd msup1 小时前
spring security 超详细使用教程(接入springboot、前后端分离)
java·spring boot·spring
952362 小时前
SpringBoot统一功能处理
java·spring boot·后端
Lyyaoo.2 小时前
优惠券秒杀业务分析
java·开发语言
消失的旧时光-19432 小时前
统一并发模型:线程、Reactor、协程本质是一件事(从线程到协程 · 第6篇·终章)
java·python·算法
勿忘初心12212 小时前
Java 国密 SM4 加密工具类实战(Hutool + BouncyCastle)|企业级数据加密 + 兼容 JDK8
java·数据安全·数据加密·后端开发·企业级开发·国密 sm4
庞轩px2 小时前
第8篇:原子类与CAS底层原理——无锁并发的实现
java·cas·乐观锁·aba·无锁编程·自旋