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

news/2024/5/19 23:53:58 标签: qt, 开发语言, pyqt5, GUI, ui, 打包, pyinstaller

文章目录

  • 一.前言
  • 二.准备工作&介绍
  • 三.项目打包
  • 三.总结


一.前言

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

二.准备工作&介绍

1.准备

1.pyinstaller
2.pipenv虚拟环境

2.介绍

pyinstaller_13">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.niftyadmin.cn/n/4973220.html

相关文章

layUI 中 穿梭框无法获取值的细节问题

初始化的时候一定要指定id,不然就会出现无法调用 获得右侧数据和实例重载的方法

elementui table 在浏览器分辨率变化的时候界面异常

异常点: 界面显示不完整,表格卡顿,界面已经刷新完成,但是表格的宽度还在一点一点变化,甚至有无线延伸的情况 思路: 1. 使用doLayout 这里官方文档有说明, 所以我的想法是,监听浏览…

居中一个元素(水平+垂直居中)

我们的示例代码全在此基础上修改&#xff1a; ...... <style>* {margin: 0;padding: 0;}.par {width: 600px;height: 400px;background-color: antiquewhite;display: flex;justify-content: center;align-items: center;}.chi1 {width: 60px;height: 40px;backgrou…

[管理与领导-52]:IT基层管理者 - 8项核心技能 - 7 - 决策

目录 前言&#xff1a; 一、什么是决策 二、为什么需要管理者的决策 三、什么时候需要管理者决策 四、常见的决策误区 4.1 关于决策的误区 4.2 错误的决策行为 五、如何进行有效决策 六、进行决策的常用方法 前言&#xff1a; 管理者存在的价值就是制定目标&#xff0…

1688API技术解析,实现获得1688商品详情

要实现获得1688商品详情&#xff0c;你需要使用1688 API。1688 API是阿里巴巴旗下的开放平台&#xff0c;它提供了一套丰富的接口&#xff0c;可以让开发者通过编程的方式获取到1688网站上的商品信息。 首先&#xff0c;你需要在阿里开放平台注册一个账号&#xff0c;并创建一…

Linux c++ - 01-开发环境配置

一、环境配置 1.安装gcc,gdb sudo apt update sudo apt install build-essential gdb 安装成功确认 gcc --version g --version gdb --version 2.安装cmake sudo apt install cmake 安装成功确认 cmake --version 3.总结 gcc 用于编译C代码 g 用于编译C代码 VSCode是通…

关于DDR协议的一些操作的理解3

1.ODT ODT操作的原因&#xff1a; DDR3中的ODT&#xff08;On-die termination&#xff09; - aerguqiuhui - 博客园 (cnblogs.com) 2.DDR中的差分信号 3.DDR中的write leaving (61条消息) DDR3基本概念6 - Write leveling&#xff08;写入均衡&#xff09;_tbzj_2000的博…

软件开发的201个原则 阅读笔记 第172-201个原则

目录 原则172 做项目总结 第8章 产品保证原则 原则173 产品保证并不是奢侈品 原则 174 尽早建立软件配置管理过程 原则175 使软件配置管理适应软件过程 原则176 组织SCM 独立于项目管理 原则 177 轮换人员到产品保证组织 给所有中间产品一个名称和版本 原则179 控制基准 原则…