学习笔记(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()#将窗体类实例化

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

透视校正

1、需要解决的问题: 怎么用图像处理的办法将梯形转换为规则的矩形,进行一个视觉的透视校正 2、解决思路: 1)先二值化图像,提取其轮廓(其中使用到填充,形态学知识) 2)…

pyinstaller运行时出现TCLError的错误该怎么办?

1)修改代码后需要重新按照以上步骤进行,尤其不能忘记了修改配置文件的datas 2)必须得先pyi-makespec -F *.py指定要打包的程序,再修改配置文件,再pyinstaller -F *.spec程序打包 3)确保配置文件已经修改成功,即将以下图…

视觉统计计数方案

1、二值化分割 2、形态学 3、距离变换 4、再进行二值化 4、连通区域计算 输入: 输出:printf("统计玉米粒的个数 contours:%d\n",contours);//contours 17

Filezilla 利用私钥无密码登录

Filezilla是常用的FTP客户端软件,这里介绍一个用私钥进行登录 主机:sftp://yourserver 用户名:yourname 点击“编辑”-“设置”菜单打开设置对话框,找到“连接”-“SFTP”设置项 添加密钥文件(A)”按钮,添加私钥文件,弹出对话框&a…

yo angualr-fullstatck 项目打包部署

yoeman使用grunt进行打包部署,直接运行grunt命令即可,期间会对代码进行检查,如果存在不规范的地方jshint会指定出来. grunt会对静态资源进行打包而且对资源文件名进行了MD5作为版本戳. 1:修改se…

学习笔记(43):Python实战编程-事件处理简介

立即学习:https://edu.csdn.net/course/play/19711/343105?utm_sourceblogtoedu 事件: 1.概念:就是给组件添加一定的功能,使得单击或者是聚焦时产生一定的反应 2.知识点: 1)给组件绑定事件: 组件名.bind…

samba

安装配置samba: 准备工作: 173/udp(NetBIOS) 138/udp 139/tcp 445/tcp 这些端口已经启动。 然后确定selinux已经关闭(#getenforce)。 一般我们装好系统之后samba都会安装的:yum list all samba* 这里我选用的是samba3x…

1 week110的zookeeper的安装 + zookeeper提供少量数据的存储

下面是在weekend110上的zookeeper的安装 在此之前,先进行快照备份。 在这里,为了后续的zookeeper配置需要,在/home/hadoop/下,新建data目录,再新建zookeeper-3.4.6目录,再新建zkdata目录。 默认情况下&…

学习笔记(47):Python实战编程-pack布局

立即学习:https://edu.csdn.net/course/play/19711/343109?utm_sourceblogtoedu pack布局: 1)最常用的布局,顺序排列布局方法 2)完成了简单的组件位置码放,但如果内部布局处理机制跟不上的话,也可能会达…

ASP.NET Web API 应用教程(一) ——数据流使用

相信已经有很多文章来介绍ASP.Net Web API 技术,本系列文章主要介绍如何使用数据流,HTTPS,以及可扩展的Web API 方面的技术,系列文章主要有三篇内容。 主要内容如下: I 数据流 II 使用HTTPS III 可扩展的Web API 文档…

windows安装64位Pygame方法

因为官方网站http://www.pygame.org/download.shtml并没有提供64位的pygame,所以要找其他网站制作的64位安装文件。 如果你已经在你的64位开发环境中安装了32位的pygame, 那么在导入pygame包的时候, 会有提示: ImportError: DLL l…

学习笔记(48):Python实战编程-grid布局

立即学习:https://edu.csdn.net/course/play/19711/343110?utm_sourceblogtoedu grid布局:根据表结构进行的布局,索引为0行0列开始,最具代表性的即使电脑计算器的数字和符号按键布局 组件.grid(row 行索引号 , column 列索引号…

为什么“三次握手,四次挥手”?

前言: 如果你说你懂IT,你懂计算机网络,那么你会怎么解释“三次握手,四次挥手”? ---------------- 1.TCP报文段首部格式: 2.TCP建立连接图 -------------------------------------------- 符号说明 seq:"sequance…

学习笔记(49):Python实战编程-place布局

立即学习:https://edu.csdn.net/course/play/19711/343111?utm_sourceblogtoedu 1.place布局: 1)最灵活的布局方式,是根据坐标点来进行组件的位置布局的 2)确定坐标点后,组件从坐标点开始展开,即以指定…

学习笔记(50):Python实战编程-Frame

立即学习:https://edu.csdn.net/course/play/19711/343112?utm_sourceblogtoedu 1.Frame:是内嵌布局管理器,针对不同功能的组件进行区域划分,在各自的区域内可以使用不同的布局,但是总的frame布局方式还是一致的 2.以计算器为例 步骤&#…

学习笔记(51):Python实战编程-ListBox

立即学习:https://edu.csdn.net/course/play/19711/343113?utm_sourceblogtoedu listbox 知识点: 1)创建listbox: self.item_listbox tkinter.Listbox(self.root,selectmode "multiple", font("微软雅黑",12),fg "black",bg &…

C++简单工厂模式

核心思想:用一个工厂类根据不同的输入条件new出不同的派生类指针,然后由多态调用不同派生类中virtual函数,得到不同的结果 所有的判断处理在工厂类中完成,通过CreateFactory函数,根据不同的类型,new出派生类…

Linux文本查看命令之touch

touch可以用来创建文件或者修改文件的时间戳如果touch的文件不存在,就创建改文件touch命令可以修改文件的Access time和 Modify time-a 可以仅修改Access time注意:由于Access time的改变,Change time也改变了,但是如果cat该文件&…

使用腾讯开发平台获取QQ用户数据资料

<今天是七夕&#xff1a;祝大家七夕嗨皮&#xff0c;前可么么哒&#xff0c;后可啪啪啪> Tips&#xff1a;本篇博客将教你如何使用腾讯开发平台获取QQ用户资料 ------------------------------------------------------------------------------------------------------…

LINUX REDHAT第十单元文档

1.系统日志默认分类#### /var/log/messages##系统服务及日志&#xff0c;包括服务的信息&#xff0c;报错等等 /var/log/secure##系统认证信息日志 /var/log/maillog##系统邮件服务信息 /var/log/cron##系统定时任务信息 /var/log/boot.log##系统启动信息 2.日志管理服务rsyslo…