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)        

 

 

 

posted @ 2023-08-24 16:33  java帝国  阅读(252)  评论(0)    收藏  举报