Pyinstaller打包资源文件


打包基本上都在网上能够查到很多关于打包方式。那么今天将介绍如何将程序中带html, 图片 资源文件打包成exe。这就是我们今天的主题。
附官方文档:https://pythonhosted.org/PyInstaller/spec-files.html

一、首先Pyinstaller打包的命令

Pyinstaller打包的基础命令:pyinstaller Options… myscript.py
pyinstaller基本Options参数如下:
-F:打包后只生成单个exe格式文件;
-D:默认选项,创建一个目录,包含exe文件以及大量依赖文件;
-c:默认选项,使用控制台(就是类似cmd的黑框);
-w:不使用控制台;
-p:添加搜索路径,让其找到对应的库;
-i:改变生成程序的icon图标。

二、资源文件打包

本节以html, icon 两个资源为例进行说明。一般打包执行命令后会生成spec文件,如果不带资源文件,那么在dist文件中找到所打包出来的exe文件便可以正常执行。如带资源文件,则需要进行“包装”一下了。

2.1资源文件说明:

在这里插入图片描述
图片资源文件:testTools.ico
Html资源文件:help.html
调用资源py文件:assetsInfo.py
以上文件都放到同一级目录下,那么我们开始对assetinfo.py进行编写,代码如下:

# -*- encoding:utf-8 -*- import os import sys def resource_path(relative_path): if getattr(sys, 'frozen', False): # 是否Bundle Resource base_path = sys._MEIPASS else: #base_path = os.path.abspath(".") base_path = os.path.dirname(os.path.abspath(__file__)) return os.path.join(base_path, relative_path) filename = resource_path(os.path.join("help.html")) winIcon_path = resource_path(os.path.join("testTools.ico")) def read_html(): with open(filename, 'r', encoding="utf-8") as f: content = f.read() return content class messageInfor: def __init__(self): pass about_infor = "当前版本: v 1.0.0" help_infor = read_html() windowIcon = winIcon_path 

resource_path方法:主要是绑定资源文件,主要是在运行程序中能够将资源文件生成临时文件,存放到windows电脑的tmp目录下。
Read_html():主要读取html文件内容

filename = resource_path(os.path.join("help.html")) winIcon_path = resource_path(os.path.join("testTools.ico")) 

因为填加的是相对路径,因此使用此方式对资源文件的位置进行查找
messageInfor:这个类主要提供我们在编写代码时做为调用资源使用。
对于资源文件的引用就不在进行叙述。

2.2 开始打包:

第一步: 首先使用: pyinstaller -F -i icon_path** **xxx.py命令(因为我们打包需要给程序一个icon图标), 如

在这里插入图片描述
执行完成后,目录会生成build与dist两个文件夹以及spec文件。

第二步:在工程文件中会产生一个spec文件。

在这里插入图片描述
先删除:builddist两个文件,因为此时运行会因为程序找不到资源文件而报错,因此我们需要解决它:
修改spec文件:
在这里插入图片描述
datas目录中增加一个元组, 如: datas=[(‘assets’, ’.’)] 第一项为资源文件所在的文件夹, 第二个值‘.’代表当前路径。

第三步:对spec文件进行编译:命令:pyinstaller -F xxx.spec

在这里插入图片描述
执行完成后会再次生成builddist文件夹
在这里插入图片描述

此时直接进入:dist文件夹,找到已打包出来的exe文件在这里插入图片描述,运行效果,点击Help,打开帮助界面,帮助界面的内容读取的html文件。
在这里插入图片描述

到此结束!

原文链接:https://blog.csdn.net/Jayden_Gu/article/details/94134409?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165277103516781483726761%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165277103516781483726761&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-13-94134409-null-null.nonecase&utm_term=%E8%B5%84%E6%BA%90

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
文明发言,共建和谐米科社区
提交
头像

昵称

取消
昵称表情图片