pyinstaller将资源文件夹与其附属文件打包成单个exe(编写spec方法)

您所在的位置:网站首页 python打包为可执行文件的模块有哪些 pyinstaller将资源文件夹与其附属文件打包成单个exe(编写spec方法)

pyinstaller将资源文件夹与其附属文件打包成单个exe(编写spec方法)

2023-12-20 21:26| 来源: 网络整理| 查看: 265

简介

笔者因为课上有需要利用pyinstaller将.py文件代码和资源文件(图片,附属第三方库等)打包成单个exe可执行文件,查找了各大网站资料(三十个以上),发现只要其中一篇的源码写有可用方法,其内容被笔者整理下来供大家参考,如有不足或缺漏可指出,烦请谅解。

一.安装所需第三方库

pyinstaller

pip方式通过阿里云镜像站下载(因为默认清华源可能会有卡顿):

pip intsall pyinstaller -i https://mirrors.aliyun.com/pypi/simple/ 二.调用终端进行打包

建议使用新的虚拟环境进行打包,具体方法看第五步的小细节备注

一般来说单个exe的打包方式为:

以下 test.py 文件为当前你所需要打包的代码的主文件入口

pyinstaller -F test.py

但是在此篇中选择的方式是spec文件进行打包: 建议将cmd终端cd到一个干净文件夹下进行打包,在此文件夹下放入要打包的.py文件和资源文件,如 在这里插入图片描述 pyecharts是我要打包的资源文件,pyecharts在当前使用的python目录下,可以直接进行搜索pyecharts找到后打开文件位置并复制到当前打包的文件夹,所以跟.py文件放为一起方便后续指定路径打包。 先生成spec文件:

pyinstaller -F test.py

然后这一步操作只要他的spec文件保留,dist和build等其他目录全部删掉,然后打开spec,进行下一步的编辑。

三.编写spec文件

举个例子,我要打包D盘下的test.py和他的附属资源文件夹pyecharts,下面的数据文件放入方法是整理了一位大牛博主qhjink的博客所见,感谢他的点子。

但是!!!值得一提的是 数据的书写格式要清晰 第一位路径和文件名标清楚,第二位是虚拟创建的文件夹的名称

added_files = [('D:/pyecharts', 'pyecharts' )]

比如你第一位的D:/pyecharts就是从环境中找到pip下来的pyecharts库的目录,第二位就是exe建成后运行生成一个虚拟目录的文件名,和第一位同名!!!

按照上面第三步的生成spec文件后,右键以文本方式打开进行编辑,可见到

# -*- mode: python ; coding: utf-8 -*- block_cipher = None added_files = [('D:/pyecharts', 'pyecharts' )] #added_files是数据文件的位置,括号里的第一位要填入文件名和绝对路径, # 第二位是被打包成exe后所用到的虚拟文件名名称(19物联网的同学直接复制之段吧,路径改一下其他的不动)。 a = Analysis(['test.py'], pathex=['D:\\'], binaries=[],#这里可以放入你的环境所依赖的一些库,如TensorFlow或pyecharts等 datas=added_files,#这里改成上面的数据文件列表则可引入资源文件夹和文件 hiddenimports=[], hookspath=[], runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE(pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [], name='test',# 打包后生成的文件名称(可自行修改) debug=False, bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], runtime_tmpdir=None, console=True, icon = 'pkq.ico') #上面的icon参数一般要自己加,并不会帮你生成,也可调用终端命令进行ico打包 四.调用终端编译文件

打开终端cd进入指定打包路径进行spec文件方式打包:

pyinstaller -F test.spec 五.一些小细节

(1)利用第三方编辑器调用终端的时候,如果是用pycharm可以在terminal终端的方式打开,而且建议最好新建一个虚拟环境,可以选择anaconda3,因为一些老的环境在无意中会给你的打包文件多增加上那么几十Mb甚至一两百Mb的冗杂文件。

(2)利用cmd打开指定的环境或者虚拟环境,环境制作器为anaconda3的情况下,可使用win+R组合键打开cmd,放入conda.bat activate TF2.1(TF2.1为读者所创建的虚拟环境名称),则可进入该虚拟环境,要创建虚拟环境的的话,点这里喔

(3)如果要调用pyecharts库的代码文件打包时,发现运行不了,可将pyecharts手动从python目录下复制到当前打包所在的路径,如果缺少了pyecharts一起打包进exe,程序可能会出错。

(4)第四步骤中的代码中在最终形成的exe文件打开后会附带一个终端显示,如果想不让程序自己关掉,可在原来的.py文件引入os库结尾加上os.system("")即可,或者可以关闭它,打包时加入-Fw,使用方法为:

pyinstaller -Fw test.spec

如有疑问或质疑可在下方评论区交流,感谢查阅!!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3