【python】tkinter程序打包成exe可执行文件相关知识点记录

打包流程:

  1. 进入带打包的文件夹目录,输入“cmd”
    【python】tkinter程序打包成exe可执行文件相关知识点记录_第1张图片

  2. 在cmd对话框中输入
    pyinstaller -F -w -i 【exe图标位置(ico文件)】【程序入口文件】
    pyinstaller -F -w -i i.ico test.py
    具体如图,图片摘自python利用pyinstaller打包简明教程
    【python】tkinter程序打包成exe可执行文件相关知识点记录_第2张图片

  3. 运行完成后,文件夹下会新增三个文件,bulid、dict和一个.spec文件,其中dict文件夹下有打包好的exe文件。

注意事项:

  1. 文件夹路径貌似必须是英文,因为我第一次打包路径有中文,结果打包失败,提示
    json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
    改成英文后,打包成功了(不太清楚是不是这个原因)。
  2. 打包成功后,出现了提示,我也不清楚什么原因,后来卸载了pyinstaller,重新安装了一下问题就解决了,python解决“failed to execute pyi_rth_pkgres”问题【python】tkinter程序打包成exe可执行文件相关知识点记录_第3张图片

注意事项:

  1. 程序窗口左上角的图标,直接用root.iconbitmap('i.ico'),打包后是没办法修改图标的,亲自测试比较好用的办法是 python tkinter把图标一起打包到exe中,先将图标变为bse64格式,变为一个.py文件,再通过import导入到程序中,这样打包好后才可以使得图标成功显示在程序窗口的左上角。

具体代码:

import base64
open_icon = open("i.ico","rb")  # i.ico为图标文件
b64str = base64.b64encode(open_icon.read())
open_icon.close()
write_data = "img = '{0}'".format(b64str)
f = open("icon.py","w+")  # 运行成功后会出现一个icon.py文件
f.write(write_data)
f.close()

然后在主程序中这样添加一下即可:

import base64
from icon import img
import os

# 将import进来的icon.py里的数据转换成临时文件i.ico,作为图标
tmp = open('tmp.ico', 'wb+')
tmp.write(base64.b64decode(img))
tmp.close()
root.iconbitmap('tmp.ico')
os.remove('tmp.ico')
    

root.mainloop()
  1. 尽量使用 from xx import xxx方式导入,这样打包后的exe程序的大小相比直接使用import xx 会小很多。我本来写了一个很小的程序,结果打包好后竟然达到了213M,后来精简导包方式,压缩到34M。

你可能感兴趣的:(python,纪录篇,python,Tkinter,GUI,控件,python,窗口程序)