欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-27 17:01:48
...

打包流程:

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

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

  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可执行文件相关知识点记录

注意事项:

  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。