6pyinstaller程序打包【tkinter】【乡村培育站暑期学习2023.8】
pyinstaller程序打包
现在已经可以开发出一个基本的图形界面程序,但是很明显,图形界面程序是为了简化用户使用程序的复杂度,但是如果每一次程序执行都用Python执行命令“python demo.py”去运行,那图形界面的开发就没意义了。比较常规的做法就是将程序打包为一个“*.exe”可执行程序文件(Windows的可执行),只要存在有Python虚拟机的主机上都可以直接执行。
如果开发者直接使用pyinstaller是可以进行程序的打包处理,但是对于当前的程序来讲,除了代码本身之外还包含有一些列的外部资源(图片、图标)。
打包图解:

打包流程:
1.【安装组件】通过pip模块管理工具安装pyinstaller组件:pip install pyinstaller;
范例一:安装打包组件。
pip install pyinstaller
2.【修改Python源代码】对于此时的程序来讲,resources资源目录一定不是项目中的相对路径,因为打包之后再次运行一定要将资源加压缩到临时目录之中;
范例二:利用函数实现资源路径的定位。
1 #coding:utf-8
2 import tkinter #导入有关窗体模块
3 import os #利用os模块可以方便获取文件路径
4 import sys #操作系统交互模块
5 def get_resources_path(relative_path): #利用此函数实现资源路径的定位
6 if getattr(sys, "frozen", False):
7 base_path = sys.MEIPASS #获取临时资源
8 else:
9 base_path = os.path.abspath(".") #获取当前路径
10 return os.path.join(base_path, relative_path) #绝对路径
11 LOGO_PATH = get_resources_path(os.path.join("resources", "LOMPSTER.ICO")) #LOGO文件路径
12 IMAGES_PATH = get_resources_path(os.path.join("resources", "zhuomian.png")) #图像文件路径
13 class MainForm: #定义窗体类
14 def __init__(self): #构造方法实现对窗体的控制
15 root = tkinter.Tk() #创建一个窗体
16 root.iconbitmap(LOGO_PATH) #设置LOGO资源
17 root.title("联合创新") #设置标题
18 root.geometry("400x300") #设置初始化尺寸,小写字母的"x"
19 root.maxsize(800, 500) #设置窗体的最大尺寸
20 root["background"] = "LightSlateGray"
21 #-------------以下进行按钮的定义---------------------------
22 photo = tkinter.PhotoImage(file=IMAGES_PATH)
23 button = tkinter.Button(root, text="生成按钮", image=photo, compound="bottom", fg="black", font=("微软雅黑", 20))
24 button.pack() #组件的显示
25 root.mainloop() #显示窗体
26 def main(): #定义主函数
27 MainForm() #主窗体实例化
28 if __name__ == "__main__": #判定程序的执行
29 main() #调用主函数
执行结果:

3.【创建spec文件】由于本次的程序打包需要进行resources资源引用,所以必须手工的在打包配置文件之中进行资源路径定义,就需要根据打包程序生成有一个"*.spec"文件,并且文件内容修改如下:
范例三:打包程序生成一个“*.spec”文件
pyi-makespec -F demo.py
执行结果:
Wrote D:\lhcx\demo.spec.
Now run pyinstaller.py to build the executable.
4.【编辑spec】修改*.spec“”
1 a = Analysis(
2 ['demo.py'],
3 pathex=["D:\\lhcx\\demo"],
4 binaries=[],
5 datas=["resources", "resources"],
5.【程序打包】根据demo.spec文件实现程序的打包处理:pyinstaller demo.spec
如果此时没有这些资源就直接使用:“pyinstaller --onefile demo.py”
项目打包完成后就会自动的出现“demo.exe”可执行程序文件,随后双击打开就可以在任何拥有Python虚拟机的电脑上使用(操作系统肯定是Windows)

浙公网安备 33010602011771号