python3GUI--PyQt5打包心得(详细图文演示)

news2024/11/17 15:59:18

文章目录

  • 一.前言
  • 二.准备工作&介绍
    • 1.准备
    • 2.介绍
      • 1.pyinstaller
      • 2.pipenv
  • 三.项目打包
    • 1.准备
    • 2.打包
      • 1.打包参数
      • 2.虚拟环境
  • 三.总结


一.前言

有朋友私信问我,如何把项目打包和如何减小打包后的文件体积。笔者参与创作过许多PyQt5项目,对打包项目到可执行exe程序还是有点心得体会的,本篇将详细介绍Pyinstaller打包PyQt5项目。看完本篇,您将会GET:1.如何正确地使用打包工具优雅地打包PyQt5项目2.如何缩小PyQt5项目打包后的文件体积。Let’s go !

二.准备工作&介绍

1.准备

1.pyinstaller
2.pipenv虚拟环境

2.介绍

1.pyinstaller

PyInstaller将Python应用程序冻结(打包)独立可执行文件中。它可以构建较小的可执行文件,它是完全多平台的,并且使用OS支持来加载动态库,从而确保完全兼容。

安装

pip install pyinstaller

笔者使用的版本是: 4.7

2.pipenv

pipenv是一个Python的包管理工具。它是requests作者Kenneth Reitz的作品,提供Python的各个版本间的管理,各种包管理。当你开始熟悉并且使用它的时候,你就知道它有点类似于前端的npm和yarn的味道。
它能自动为项目创建和管理虚拟环境。当你使用pipenv的时候,他会在项目根目录下创建Pipfile,用于记录包的版本信息。当你使用pipenv来安装包的时候,它会在项目根目录生成Pipfile.lock文件来锁定安装包的版本和依赖信息,避免构建错误。
安装

pip install pipenv

笔者使用的版本是: 2022.1.8

三.项目打包

1.准备

资源
这里以我的一个PyQt5项目为例演示打包PyQt5到一个文件,项目结构如下:
在这里插入图片描述
简单介绍一下项目:

1.CWidgets.py 自定义组件
2.engine.py 软件核心引擎文件,脱离了项目也能单独运行,不依赖GUI
3.qr_code_ui.py 主界面GUI,由qr_code_ui.ui使用ui工具转化而来
4.qr_GUI.py 软件主界面调度,也是本次GUI的入口,里面将上述文件调度起来
5.resource_rc.py 资源索引文件由resource_rc.qrc使用rcc工具转化而来对的

本次将上述五个文件打包到一个文件里

所有图标文件放在了icons文件夹下,使用qrc生成了这些图标文件的索引,文件结构如下图:
在这里插入图片描述
使用rcc工具将.qrc文件转化为.py文件即resource_rc.py以供项目引用。在需要使用资源文件的地方都这样写:

在这里插入图片描述

2.打包

1.打包参数

在这里插入图片描述

2.虚拟环境

打包前启动虚拟环境
在项目根目录打开cmd,启动pipenv虚拟环境

pipenv shell

在这里插入图片描述

本次把项目打包到一个文件并且加入图标ico.ico
中所以命令是:

pyinstaller -F -w -i ico.ico qr_GUI.py --hidden-import  CWidgets.py --hidden-import engine.py  --hidden-import  qr_code_ui.py --hidden-import resource_rc.py

在这里插入图片描述

打包完成,项目根目录会多出几个文件夹,其中dist文件夹为存放exe文件夹。本次虚拟环境打包文件大小54.1M
在这里插入图片描述

三.总结

本次演示了如何在虚拟环境下使用pyinstaller打包PyQt5项目。

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

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

相关文章

HarmonyOS应用开发者高级认证练习题

系列文章目录 HarmonyOS应用开发者基础认证练习题 HarmonyOS应用开发者高级认证练习题 文章目录 系列文章目录前言一、判断二、单选三、多选 前言 本文所有内容来源于个人进行HarmonyOS应用开发者系列认证的学习过程中所做过的练习题,所有答案均是个人作答&#x…

深度学习4. 循环神经网络 – Recurrent Neural Network | RNN

目录 循环神经网络 – Recurrent Neural Network | RNN 为什么需要 RNN ?独特价值是什么? RNN 的基本原理 RNN 的优化算法 RNN 到 LSTM – 长短期记忆网络 从 LSTM 到 GRU RNN 的应用和使用场景 总结 百度百科维基百科 循环神经网络 – Recurre…

css滚动条样式这样修改下很漂亮

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>滚动条样式修改下很漂亮(不支持IE)</title> <style type"text/css"> * { margin: 0; padding: 0; } .box { width: 300px; height: 100px; margin…

Linux系统编程:线程控制

目录 一. 线程的创建 1.1 pthread_create函数 1.2 线程id的本质 二. 多线程中的异常和程序替换 2.1 多线程程序异常 2.2 多线程中的程序替换 三. 线程等待 四. 线程的终止和分离 4.1 线程函数return 4.2 线程取消 pthread_cancel 4.3 线程退出 pthread_exit 4.4 线程…

在编辑器中使用正则

正则是一种文本处理工具&#xff0c;常见的功能有文本验证、文本提取、文本替换、文本切割等。有一些地方说的正则匹配&#xff0c;其实是包括了校验和提取两个功能。 校验常用于验证整个文本的组成是不是符合规则&#xff0c;比如密码规则校验。提取则是从大段的文本中抽取出…

探索AIGC人工智能(Midjourney篇)(二)

文章目录 利用Midjourney进行LOGO设计 用ChatGPT和Midjourney的AI绘画&#xff0c;制作儿童绘本故事 探索Midjourney换脸艺术 添加InsightFaceSwap机器人 Midjourney打造专属动漫头像 ChatGPT Midjourney画一幅水墨画 Midjourney包装设计之美 Midjourney24节气海报插画…

【车载开发系列】常用开发工具一览

【车载开发系列】常用开发工具一览 常用开发工具一览 【车载开发系列】常用开发工具一览一. HexView(十六进制查看编辑器)二. VSB Vehicle Systems Builder三. MULTI IDE四. CANoe五. CANalyzer网络分析测试工具六. CasePlayer2七. Renesas Flash Programmer八. Ecu Spectrum九…

红黑树基础理解

一、数据结构 1.数组 a.内存地址连续&#xff0c;使用之前必须要指定数组长度 b.可以通过下标访问的方式访问成员&#xff0c;查询效率高 c.增删操作会带来性能消耗效率相对差点(要防止数据下标越界的问题&#xff0c;需要动态扩容&#xff09; 2.链表 &#xff1a;单向链表…

ICP算法

一、ICP 迭代最接近点&#xff08;ICP&#xff09;&#xff1a;给定两个点集。估计R&#xff0c;t以对齐两个点。 找到点的对应关系估算R&#xff0c;t基于R&#xff0c;t&#xff0c;计算误差和分数重复执行上述步骤直到收敛 传统ICP&#xff1a;根据距离进行计算&#xff0c…

使用Python统计小说语言描写的字数

说明&#xff1a;最早出现这个需求&#xff0c;来自博主阅读《罪与罚》&#xff0c;书中陀思妥耶夫斯基有太多的语言描述&#xff0c;以至于我想知道这本书中到底出现了多少对白。文本介绍如果使用python程序统计一本书中的对话&#xff0c;角色名称&#xff0c;标点符号。 找…

深度学习模型数值稳定性——梯度衰减和梯度爆炸的说明

文章目录 0. 前言1. 为什么会出现梯度衰减和梯度爆炸&#xff1f;2. 如何提高数值稳定性&#xff1f;2.1 随机初始化模型参数2.2 梯度裁剪&#xff08;Gradient Clipping&#xff09;2.3 正则化2.4 Batch Normalization2.5 LSTM&#xff1f;Short Cut&#xff01; 0. 前言 按照…

读取SD卡图片bin文件显示LCD上

读取SD卡bin文件显示图片 Coding 环境搭建&#xff1a; 硬件平台&#xff1a;STM32H750XBH6开发环境&#xff1a;STM32CubeMX V6.8.1KEIL V5.28.0.0STM32H750固件版本&#xff1a;package V1.11.0仿真下载驱动&#xff1a;ST-Link 前言&#xff1a;STM32H750XBH6 的flash只…

零基础学习正演的数值模拟(含代码)

摘要: 本贴从零开始学习正演的数值模拟方法. 包括相应的偏微分基础、声波方程、雷克子波、均匀速度场的模拟、一般速度场的模拟. 1. 偏微分基础 本小节仅涉及高等数学相关知识, 与领域无关. 1.1 导数 引例: 物体从一维坐标的原点开始移动, 在 t t t 时刻, 它在坐标轴的位置…

汤普森采样(Thompson sampling): 理论支持

目录 一、UCB与TS算法数学原理1、Upper Confidence Bounds 数学原理2、Thompson sampling 数学原理a、TS 基本数据原理1. beta 分布2. 共轭分布与共轭先验3. 采样的编程实现 b、TS 算法流程1. TS算法基础版本2. Batched Thompson Sampling 二、UCB与TS算法的优缺点1、TS算法的优…

Ubuntu释放VMware虚拟磁盘未使用空间

By: Ailson Jack Date: 2023.08.26 个人博客&#xff1a;http://www.only2fire.com/ 本文在我博客的地址是&#xff1a;http://www.only2fire.com/archives/152.html&#xff0c;排版更好&#xff0c;便于学习&#xff0c;也可以去我博客逛逛&#xff0c;兴许有你想要的内容呢。…

基于Java+SpringBoot+Vue前后端分离医院后台管理系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

Spring为什么要专门定义BeanDefinition ,有Class不行吗?

前言 创建一个Java Bean&#xff0c;大概是下面这个流程&#xff1a; 我们写的Java文件&#xff0c;会编译为Class文件&#xff0c;运行程序&#xff0c;类加载器会加载Class文件&#xff0c;放入JVM的方法区&#xff0c;我们就可以愉快的new对象了。 创建一个Spring Bean&am…

项目总结知识点记录(二)

1.拦截器实现验证用户是否登录&#xff1a; 拦截器类&#xff1a;实现HandlerInterception package com.yx.interceptor;import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpS…

Mybatis+MybatisPlus拦截器实战之数据的加解密和脱敏

文章目录 一、前言二、拦截器简介三、代码目录结构简介四、核心代码讲解4.1 application.yml文件4.2 自定义注解4.2.1 SensitiveEntity4.2.2 SensitiveData4.2.3 MaskedEntity4.2.4 MaskedField4.2.5 MaskedMethod 4.3 Mybatis-Plus 拦截器数据自动加密4.4 Mybatis 打印完整sql…

7年经验之谈 —— 如何实现高效的Web自动化测试?

随着互联网的快速发展&#xff0c;Web应用程序的重要性也日益凸显。为了保证Web应用程序的质量和稳定性&#xff0c;Web自动化测试成为必不可少的一环。然而&#xff0c;如何实现高效的Web自动化测试却是一个值得探讨的课题。 首先&#xff0c;选择合适的测试工具是关键。市面…