赞
踩
打包基本上都在网上能够查到很多关于打包方式。那么今天将介绍如何将程序中带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文件。
先删除:build和dist两个文件,因为此时运行会因为程序找不到资源文件而报错,因此我们需要解决它:
修改spec文件:
在datas
目录中增加一个元组, 如: datas=[(‘assets’, ’.’)]
第一项为资源文件所在的文件夹, 第二个值‘.’代表当前路径。
第三步:对spec文件进行编译:命令:
pyinstaller -F xxx.spec
执行完成后会再次生成build和dist文件夹
此时直接进入:dist文件夹,找到已打包出来的exe文件,运行效果,点击Help,打开帮助界面,帮助界面的内容读取的html文件。
到此结束!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。