学习笔记(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,一经查实,立即删除!

相关文章

[js]BOM篇

一、什么是BOM BOM(Browser Object Model)即浏览器对象模型。BOM提供了独立于内容 而与浏览器窗口进行交互的对象;由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心对象是window;BOM由一系列相关的对象构成&#x…

透视校正

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

杂项备忘

svn导出 export LANGzh_CN.UTF-8 && svn --username shuai --password shuai checkout svn://192.168.14.111/safe.qq.com /update/webapps/safe.qq.com mysqlsla --sortc_sum slow.log 本文转自 liang3391 51CTO博客,原文链接:http://blog.51cto.com/liang…

安装Pywin32后无法正常引用pyd文件

1. 首先在官方下载pywin32 2.下载完成后,无法正常引用pyd文件 3.解决方案: python安装目录\Lib\site-packages\pywin32_system32\* 至 C:\Windows\System32 转载于:https://www.cnblogs.com/MonkeyKingK/p/4731960.html

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

SQL Server 查询表备注信息的语句

--name 字段名称--user_type_id --max_length 最大长度--is_nullable 是否允许空--remark 描述SELECT c.name, c.user_type_id, c.max_length, c.is_nullable, remark ex.value FROM sys.columns c inner JOIN sys.extended_properties ex ON ex.major_id c.object_id…

Filezilla 利用私钥无密码登录

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

yo angualr-fullstatck 项目打包部署

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

Visual Studio 快捷键使用方法

1、Ctrl k 和 Ctrl F 一起使用可以格式化代码,让其对齐工整。

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

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

浅谈MIPS地址对齐问题

1.什么叫地址对齐? RISC 下使用访存指令读取或写入数据单元时,目标地址必须是所访问之数据单元字节数的整数倍,这个叫做地址对齐。 2.计算机主要的架构分哪两类?及其地址对齐在两者的区别? 计算机主要的架构就分为两类…

海信FW3010-5000H千兆防火墙

海信FW3010-5000H千兆防火墙 ◆处理带宽达到3G; ◆支持1,500,000个并发连接; ◆支持高达25,000个高级访问过滤; ◆真正的千兆硬件平台; ◆双机热备功能; ◆完善的日志信息; ◆支持P2P过滤,多达14种P2P识别; ◆特有的灾难恢复机制; ◆内嵌IDS模块,也可和…

java File类 打印目录树状结构(递归)

import java.io.File;/*** 递归遍历**/ public class FieTree {public static void main(String[] args) {File f new File("D:/java笔记");printFile(f,0);}static void printFile(File file,int level){for(int i0;i<level;i){System.out.print("-")…

C++ vector.insert的用法

insert() 函数有以下三种用法: 在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器, 在指定位置loc前插入num个值为val的元素 在指定位置loc前插入区间[start, end)的所有元素 .&#xff0c;查看源码返回元素的大小个数 原函数 iterator insert(const_iterator…

学习笔记(44):Python实战编程-单击事件

立即学习:https://edu.csdn.net/course/play/19711/343106?utm_sourceblogtoedu 1.单击事件&#xff1a;主要的单击事件是鼠标左键单击事件&#xff0c;一般是与按钮绑定在一起 2.关键代码&#xff1a;这里是以按钮绑定组件单击事件为例&#xff0c;单击的响应是弹出简单的对话…

samba

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

(1)dotnet开源电商系统-brnshopbrnMall 和老外开发的nopCommerce(dotnet两套电商来PK--第一篇)...

一直想做电商软件&#xff0c;但是实在不想学PHP了&#xff0c;所以前后关注了这两个开源电商系统。一个是国人出品的&#xff0c;一个据说是俄罗斯人写得&#xff08;不知道对不对&#xff09;。目前两个开源软件都在学习了解中&#xff0c;以下的博文可能会涉及到这两套系统&…

hdoj 2022 海选女主角

Problem Descriptionpotato老师虽然很喜欢教书&#xff0c;但是迫于生活压力&#xff0c;不得不想办法在业余时间挣点外快以养家糊口。“做什么比较挣钱呢&#xff1f;筛沙子没力气&#xff0c;看大门又不够帅...”potato老师很是无奈。“张艺谋比你还难看&#xff0c;现在多有…

linux 下的gettimeofday 函数在windows上的替换方案

方案一&#xff1a; #include <time.h> #ifdef WIN32 # include <windows.h> #else # include <sys/time.h> #endif #ifdef WIN32 int gettimeofday(struct timeval *tp, void *tzp) { time_t clock; struct tm tm; SYSTEMTIME wtm; Ge…