本只想将我写的代码打包成应用程序:
①突然心血来潮想给应用程序添加一个应用图标:
问题1:
但是应用程序的图标只能是ico格式的,因此我的解决办法是去网站转化
结果成功:
转化成功了使用cmd命令可以成功转为应用图标了,具体命令须在脚本与图标文件夹里面的路径写入:pyinstaller -i a.ico
2.由于我写的代码有图片在内
问题2:
因此需要另外自行创建一个py文件再写一段代码将图片转化成py文件
具体代码如下(参考这位博主的:https://blog.csdn.net/a861357276/article/details/107205604)
# coding:utf-8
import base64
def img_trans_py(img):
open_pic = open(f"{img}", 'rb')
b64str = base64.b64encode(open_pic.read())
open_pic.close()
write_data = 'img = "%s"' % b64str.decode()
#解码后方可改后缀名
f = open('%s.py' % img.replace('.', '_'), 'w+')
f.write(write_data) #写入原来的图片中
f.close()
if __name__ == '__main__':
pics = ["图片名称.png", "图片名称.png", "图片名称.png"] #批量转化 只需要改此处,将你的图片文件路径写入
for i in pics:
img_trans_py(i)
print("完成所有图片转化!")
3.于是我发现是没有将图片转成的py文件导入我的脚本。参考这位博主的(https://blog.csdn.net/a861357276/article/details/107205604)
# coding:utf-8
import base64
import os
from one_png import img as one #导入你的图片img.py变量,赋别名为one ,导入py文件相当导入一个包因此不需要后缀
temp = open('one.png', 'wb') #创建临时的文件
temp.write(base64.b64decode(one)) ##把这个one图片解码出来,写入文件中去。
temp.close()
# ----------这里中间放入你的脚本代码,并在你引用图片的地方改成 one.png 这个内部生成的文件-------------
#这个放在代码最后,如果放在前面,会马上删除图片,导致程序不能正常运行
os.remove('one.png') #用完可以删除这个临时图片
这里注意几个点:
1.在没有导入之前我重新打包,发现仍然运行不成功,原因还是那个在我代码找不到图片,因此我关掉电脑上个厕所喝杯水好好分析
2.我在想我虽然导入了图片文件,但是我脚本里面引用的还是原来的那个图片img.png
3.问题肯定出在这,明天继续弄
于是今天就把昨天踩到的小坑挖出来给大家分享。(小白教程)