Pyinstaller打包exe附带图片的方法
2019.10.27更新
在最近的wordpress项目中学到了图片字节码可在文件中存在,于是我做了试验并成功了(就是代码里带一堆字节码……)
参考:
https://blog.csdn.net/jss19940414/article/details/85841982
https://www.cnblogs.com/xianqingsong/p/9965899.html
https://blog.csdn.net/u013055678/article/details/71406746
这是将路径下图片编码再解码保存的例子:
import os, base64with open("D:\\XiutuDog\\_pic.png","rb") as f:# b64encode是编码,b64decode是解码base64_data = base64.b64encode(f.read())print(base64_data)#输出生成的base64码#img_str = 'abcdefgh12345oK='#比如生成后的码就这么放,替换下面的base64_data即可
img_data = base64.b64decode(base64_data)
# 注意:如果是"data:image/jpg:base64,",那你保存的就要以png格式,如果是"data:image/png:base64,"那你保存的时候就以jpg格式。
with open('001.png', 'wb') as f:f.write(img_data)
把经过编码后的base64_data(输出的)放在代码里,再解码写到文件夹里实现“释放”【在被注释的img_str哪里】,虽然方法比较笨,但是这是实在的“exe附带图片”!
2018.10.13附加
原来下面这个方法是把图片存到绝对路径了(存同文件夹是相对路径……),所以放哪都能用……现在没卵用,我再去找方法吧……
pyinstaller打包运行报错failed to execute script main(也有可能是图片路径没找到):https://blog.csdn.net/jeff_/article/details/72907113
原文:
毕设写的工具最近才想起来应该做成个exe造福大众,奈何路途曲折
先是vs直接装的pyinstaller不管用;后是不知如何打多个文件的项目(最后写在一个.py里了……还有import的包尽量减少了);最后是图片文件不会打包在一起,让我有种擦屎擦不干净的不爽的感觉——一个小exe还必须和几个固定命名的图片在一个文件夹内不然打不开!!
今天看了看了不少帖子,方法有的简单但是不成功;有的麻烦,要改的东西有点多就不想尝试;最后看着错误提示加思考终于成功的打了个exe!
pyinstaller的安装:
参照(很好的帖子)https://blog.csdn.net/lqzdreamer/article/details/77917493
单个exe啥也不用的话,下面的命令就够了。
pyinstaller -F test.py
打包python 加icon 去掉cmd黑窗口 https://blog.csdn.net/frank_good/article/details/60962012
python pyinstaller.py -F -p C:\python27; -i .\xxx.ico .\demo.py --noconsole
接下来介绍打包图片的方法。
开始是参考https://blog.csdn.net/qq744746842/article/details/49404027的,但是后来尝试失败,
pyinstaller options name.spec
这句代码执行不了啊……
本教程完整过程开始:
生成spec文件:
这是我要打包的东西。(接下来的文件名都参照这个)
然后cmd到这个目录,(我是当前文件夹直接按住shift+右键,单击“在此处打开powershell窗口”,效果一样还方便)
在cmd里输入 :
pyi-makespec FP.py
会生成一个FP.spec
然后改FP.spec里面的东西,下面是原样
直接打这个文件的包出来的是……如下,我可不想把工具做的这么复杂……
接下来就是改里面的东西,(如果不想用这种办法,另一种是https://blog.csdn.net/jirryzhang/article/details/78881512里的是用指令来做,而且直接是单个exe)
.py图片引用完整路径
改之前,需要把你python程序里的所有的图片引用换成完整的路径:
代码里就这么用图片喽……
此方法有参照http://tieba.baidu.com/p/3060401749的第6楼(看他jia加的函数,就是获取完整路径而已),再加再一篇帖子里看到“pyinstaller不是将代码编译,而是将脚本弄成可以执行的文件,所以别想能打包后程序变快”,由此猜想到“图片需要完整路径,spec文件里也要写上完整路径,这样就能让这个exe‘接轨’运行起来”
开始改spec文件:
方法有参考 https://blog.csdn.net/xinyingzai/article/details/80282856,
但是datas并不是datas+=[('_pic.png','D:\\XiutuDog\\_pic.png','DATA')],会报错“expected tuple,not list”,
于是我是这么改的datas+=(('_pic.png','D:\\XiutuDog\\_pic.png','DATA'))
红框是三张我需要的图片,格式是 (('名字1','1的完整路径','类型'),('名字2','2的完整路径','类型'))
左边的橙色箭头是是否显示控制台的cmd黑框
右边的橙色箭头是加上去的,可以给自己的exe换图标【但是离开文件夹就不是这个图标了,现在还没解决】
全文如下:
# -*- mode: python -*-block_cipher = Nonea = Analysis(['FP.py'],pathex=['D:\\XiutuDog'],binaries=[],datas=[],hiddenimports=[],hookspath=[],runtime_hooks=[],excludes=[],win_no_prefer_redirects=False,win_private_assemblies=False,cipher=block_cipher,noarchive=False)a.datas +=(('_icon.ico','D:\\XiutuDog\\_icon.ico','DATA'),
('_pic.png','D:\\XiutuDog\\_pic.png','DATA'),
('_start.png','D:\\XiutuDog\\_start.png','DATA'))pyz = PYZ(a.pure, a.zipped_data,cipher=block_cipher)
exe = EXE(pyz,a.scripts,a.binaries,a.zipfiles,a.datas,[('_icon.ico','D:\\XiutuDog\\_icon.ico','DATA')],name='FP',debug=False,strip=False,upx=True,runtime_tmpdir=None,console=False , icon='_icon.ico')
开始打包
与通常不同,这次的对象是之前改过的.spec文件,而不是.py文件
pyinstaller -F FP.spec
有个坑:如果刚改完.spec,手贱打了个 pyinstaller -F test.py ,那么.spec文件可就被改成默认的了!
完成后应当是这样的(FP.exe是从dist文件夹复制出来的,【dist文件夹内就是打包好的exe】)
那个exe,离开了图标所在的文件夹可能会变回原来的默认图标,一会儿后会恢复……
但是无论如何,可以脱离图片运行了o(* ̄▽ ̄*)ブ
部分其他参考
https://blog.csdn.net/xueyuanlzh/article/details/79892968
https://blog.csdn.net/lion_cui/article/details/51329497(图片转py,觉得麻烦,没用它)
Pyinstaller打包exe附带图片的方法相关推荐
- Pyinstaller 打包exe附带资源,运行时自动解压所需资源(图片文本音频等)
前言: 用Pyinstaller 打包exe时,有时候得附带上一些资源,才能让程序不那么单调. 在网上也有很多把依赖文件打包进exe的方法,不过都只能打包一些图片或者文本而已. 还有一个就是通过修改P ...
- python pyinstaller 打包exe文件,(附带图片 + 自己、别人电脑上均可以运行)
python pyinstaller 打包exe文件,(附带图片 + 自己.别人电脑上均可以运行) 科目:windows + python pyinstaller 打包exe 内容:打包程序.图片.视 ...
- pyinstaller打包exe文件太大解决方法
pyinstaller打包exe文件太大的原因是把其它用不到的库也一起打包了,我的python用的Anoconda,本身带了很多库,代码打包后文件330MB,解决后只有29MB. 一.解决方法 解决方 ...
- python 打包exe_python pyinstaller打包exe报错的解决方法
今天用python 使用pyinstaller打包exe出现错误 环境pyqt5 + python3.6 32位 在导入pyqt5包之前加上如下代码 import sys import os if h ...
- python 打包 exe_python pyinstaller打包exe报错的解决方法
今天用python 使用pyinstaller打包exe出现错误 环境pyqt5 + python3.6 32位 在导入pyqt5包之前加上如下代码 import sys import os if h ...
- pyinstaller打包exe(32位和64位)和运行太慢等问题解决
pyinstaller打包exe(32位和64位)和运行太慢等问题解决 文章目录 pyinstaller打包exe(32位和64位)和运行太慢等问题解决 前言 一.pyinstaller的安装 二.p ...
- python 打包exe_将python文件打包exe独立运行程序方法详解
首先需要安装pyinstaller库. pip install pyinstaller exe程序打包步骤 cmd 进入要编译的python文件所在的文件夹, 然后 pyinstaller -F he ...
- python打包exe黑框一闪而过,解决pyinstaller打包exe文件出现命令窗口一闪而过的问题...
用pyinstaller打包的exe文件打开时,命令窗口一闪而过,并且未出现GUI界面,也看不到错误信息,然后去网上搜相关的信息,最多的两种说法: 1.添加raw_input()或者os.system ...
- pyinstaller 打包exe 防反编译(加密)
如果对安全性要求不高,可以选择直接将py文件,打包成exe即可,解压出来的是pyc文件,pyc文件还原成源码,也是有一定复杂度的,相对而言也是有一定的安全性的 在源文件同级目录下创建build文件 b ...
最新文章
- Python:打印目录下最大的十个文件
- Android 面试题(转)
- JavaEE是什么?
- 粗题⼈不考你没学过的算法
- 【ROI 2019 Day2】课桌【贪心】【决策单调性】【分治】
- java中得到classpath和当前类的绝对路径的一些方法(路径中的%20进行替换空格)...
- 浅谈OpenCL之Platform API(1)
- z-blog php 静态设置,Nginx的Z-Blog的伪静态配置方法
- 9.logstash
- Javascript游戏,街头霸王
- MySQL常用语句总结
- hyperscan5.0编译方式整理
- 吸引子传播(Affinity Propagation)算法
- 02_安装nginx-银河麒麟V10(Kylin Linux Advanced Server V10 (Tercel))操作系统
- matlab rgb三维直方图,MATLAB小技巧之十:利用MATLAB绘制三维彩色柱状图[转载]
- android国外壁纸app,4K Wallpapers,火遍全球的4K高清壁纸App,谷歌市场1300万好评!...
- 百度小程序模板制作_百度小程序模板平台
- 在ubuntu中使用7z压缩命令分卷压缩超大文件
- 用无线网卡做wifi热点共享网络的方法
- Android学习之Socket多个客户端即时通信聊天
热门文章
- 滤波、信号、数字与模拟、金字塔 一看就懂 教程
- 到底是上班舒服还是上学舒服!上班一个月的感受!
- 手游低延迟高性价比蓝牙耳机,300元学生党最爱五款蓝牙耳机
- 深圳软件测试培训:简述关系型数据库和非关系型数据库
- 计算机专业英语被动语态举例,高考英语各种时态被动语态总结
- base64图片格式转换
- 115-545-003丨Alexa Fluor 488标记亲和纯化山羊抗小鼠IgG(H+L)二抗
- D-OJ刷题日记:将十进制数转换成八进制数 题目编号:545
- 谷歌浏览器插件HackBar安装方法(详细教程)
- 单精度浮点数和双精度浮点数_浮点数和双精度数之间的区别