网上很多Pyinstaller打包资源文件的教程,有的说得不清不楚,根本无法理解和使用;本文参考相关的文章做个记录。
一、个人对Pyinstaller生成exe的理解
Pyinstaller生成exe就好比平常使用Winrar压缩解压软件一样,把需要的文件都压缩到1个文件里;在运行的时候再把这些文件释放出来。
二、Pyinstaller打包的基础命令:pyinstaller Options myscript.py
pyinstaller基本Options参数如下:
-F:打包后只生成单个exe格式文件;
-D:默认选项,创建一个目录,包含exe文件以及大量依赖文件;
-c:默认选项,使用控制台(就是类似cmd的黑框);
-w:不使用控制台;
-p:添加搜索路径,让其找到对应的库;
-i:改变生成程序的icon图标。
三、资源文件打包
以easygui加载图片为例,讲解怎么把图片加载入资源文件并调用。
3.1 资源文件说明:

test.py代码:
import easygui as eg
import assets.assetinfo as ai
messageInfor = ai.messageInfor()
windowGif = messageInfor.windowGif
#进入页面弹窗
eg.msgbox("hellowindows","tips",image = windowGif)
assetinfo.py代码(该文件实现调用释放后的资源文件):
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)
winGif_path = resource_path(os.path.join("ad2.gif")) # 获取图片路径
class messageInfor:
def __init__(self):
pass
about_infor = "当前版本: v 1.0.0"
windowGif = winGif_path
3.2 开始打包
① 执行:
pyinstaller -F test.py
② 删除:
build和dist两个文件

③ 修改test.spec文件:
datas=[('assets', '.')] 第一项为资源文件所在的文件夹, 第二个值‘.’代表当前路径。

④ 执行:
pyinstaller -F test.spec




