学习笔记(42):Python实战编程-pyinstaller程序打包
将程序打包可以使得所有Windows带有python虚拟机的电脑进行使用,打包的内容有代码加外部资源(如logo图片等)
步骤:
1)创建程序的代码
2)生成配置文件——用于获得打包的资源,将资源保存在运行程序的电脑的临时文件中,这里临时文件是resources文件夹
3)修改python源代码:因为此时的程序的资源目录resources不一定在当前项目的目录下,而是在打包后再次运行时一定要将资源解压缩到临时文件当中
4)创建配置文件:因为程序打包需要引用资源文件,因此必须手工地对资源的路径进行定义,就需要根据打包程序生成一个.spec配置文件,
pyi-makespec -F *.py给定要打包的程序
5)编辑spc文件,定义我们需要使用资源路径打开.spec文件——找到datas=[],项,修改为data = [("resources","resources")]里面放的是一个元组
6)程序打包:pyinstaller -F *.spec
7)若没有则使用pyinstaller -F *.py,
8)打包结束后就会有*.exe文件了
'''将程序打包可以使得所有Windows带有python虚拟机的电脑进行使用,打包的内容有代码加外部资源(如logo图片等)步骤:
1)创建程序的代码
2)生成配置文件——用于获得打包的资源,将资源保存在运行程序的电脑的临时文件中,这里临时文件是resources文件夹
3)修改python源代码:因为此时的程序的资源目录resources不一定在当前项目的目录下,而是在打包后再次运行时一定要将资源解压缩到临时文件当中
4)创建配置文件:因为程序打包需要引用资源文件,因此必须手工地对资源的路径进行定义,就需要根据打包程序生成一个.spec配置文件,
pyi-makespec -F *.py给定要打包的程序
5)编辑spc文件,定义我们需要使用资源路径打开.spec文件——找到datas=[],项,修改为data = [("resources","resources")]里面放的是一个元组
6)程序打包:pyinstaller -F *.spec
7)若没有则使用pyinstaller -F *.py,
8)打包结束后就会有*.exe文件了
'''import tkinter,os#导入创建窗体的相关模块
import sys#导入与操作系统交互的模块def get_resource_path(relative_path):#利用此函数实现资源路径的定位if getattr(sys,"frozen",False):base_path = sys._MEIPASSelse:base_path = os.path.abspath(".")#获得当前目录路径return os.path.join(base_path,relative_path)#获得绝对路径# image_path = image_path = r'C:\Users\jinlin\Desktop\python_further_study\GUI编程\resources' + os.sep + 'linlianqin.gif'#只支持gif格式的图片'''
下面这个语句提示无法找到路径提示错误,这里特别需要注意:
1)修改代码后需要重新按照以上步骤进行,尤其不能忘记了修改配置文件的datas
2)必须得先pyi-makespec -F *.py指定要打包的程序,再修改配置文件,再pyinstaller -F *.spec程序打包
'''print(get_resource_path(os.path.join("resources","linlianqin.gif")))
image_path = get_resource_path(os.path.join("resources","linlianqin.gif"))#修改图片的路径,从上面定义的资源路径中获取图,get_resource_path(os.path.join("临时资源文件夹","图片名称"))class Mainwindow():#创建窗口类def __init__(self):root = tkinter.Tk() # 创建主体窗口root.title('linlianqin') # 定义窗体的名字root.geometry('500x500') # 定义窗体的初始大小root.maxsize(1200, 1200) # 设置窗口可以显示的最大尺寸#---------------以下是对按钮的设置---------------photo = tkinter.PhotoImage(file = image_path)#设置按钮的外观,这里是将图片设置为按钮的外观button = tkinter.Button(root,text = 'linlianqin',image = photo,compound = 'bottom')#创建按钮button.pack()#显示按钮root.mainloop()#显示窗口if __name__ == '__main__':Mainwindow()#将窗体类实例化
学习笔记(42):Python实战编程-pyinstaller程序打包相关推荐
- 学习笔记(53):Python实战编程-Checkbutton
立即学习:https://edu.csdn.net/course/play/19711/343116?utm_source=blogtoedu 复选框Checkbutton:与单选框是相对的,一些用法 ...
- 学习笔记(58):Python实战编程-Combobox
立即学习:https://edu.csdn.net/course/play/19711/343121?utm_source=blogtoedu 1.下拉列表Combobox:与Listbox相比,下拉 ...
- 学习笔记(57):Python实战编程-Treeview
立即学习:https://edu.csdn.net/course/play/19711/343120?utm_source=blogtoedu 1.树状结构Treeview:分为树状折叠式列表和列表显 ...
- 学习笔记(55):Python实战编程-Scrollbar
立即学习:https://edu.csdn.net/course/play/19711/343118?utm_source=blogtoedu 1.滚动条ScrollBar: 当列表内容项的内容过多时 ...
- 学习笔记(54):Python实战编程-Scale
立即学习:https://edu.csdn.net/course/play/19711/343117?utm_source=blogtoedu 1.滑块组件Scale: 用于定义一定范围的区间,如音量 ...
- 学习笔记(52):Python实战编程-Radiobutton
立即学习:https://edu.csdn.net/course/play/19711/343115?utm_source=blogtoedu 单选钮:Radiobutton 1)相对于大部分组件而言 ...
- 学习笔记(51):Python实战编程-ListBox
立即学习:https://edu.csdn.net/course/play/19711/343113?utm_source=blogtoedu listbox 知识点: 1)创建listbox: se ...
- 学习笔记(49):Python实战编程-place布局
立即学习:https://edu.csdn.net/course/play/19711/343111?utm_source=blogtoedu 1.place布局: 1)最灵活的布局方式,是根据坐标点 ...
- 学习笔记(48):Python实战编程-grid布局
立即学习:https://edu.csdn.net/course/play/19711/343110?utm_source=blogtoedu grid布局:根据表结构进行的布局,索引为0行0列开始, ...
最新文章
- Simple NHibernate Architecture[from]
- java ldap 登陆AD域 查找某个帐号 查找某个组织单位
- C#字符串二进制互换
- Matlab Robotic Toolbox V9.10工具箱(六):puma560 动力学建模与仿真
- Jenkins中安装Role-based Authorization Strategy插件来实现用户角色权限管理
- java解析xml实例_在java中使用dom解析xml的示例分析
- vue 为全局变量赋值_vue设置全局变量和修改
- C语言-动态内存管理
- Nginx常用命令有哪些?
- 求解一元一次方程C语言,问一道算法题目(解一元一次方程的问题)
- memcache面试
- 产业链人士:台积电将同设备及原材料供应商谈判,希望明年降价15%
- ubuntu下安装 Source insight
- 【答疑】对象存储OSS常见问题解答(SDK类2)
- ffmpeg 将拆分的数据合成一帧_FFMPEG 视频分割和合并
- android图形开发工具,Android开发实现的几何图形工具类GeometryUtil完整实例
- 华三 h3c ospf配置
- 常微分二阶线性齐次微分方程的通解推导
- mate桌面暗色调超好看的配置
- 2019数据结构考研复习指导习题代码(王道论坛)