python3GUI--PyQt5打包心得(二)nuitka、inno Setup(详细图文演示、附所有软件)

文章目录

  • 一.前言
  • 二.准备
    • 1.nuitka
      • 1.1介绍
      • 1.3项目地址
      • 1.3安装
    • 2.mingw64
      • 1.1介绍
      • 1.2下载安装
    • 3.Inno Setup
      • 1.1介绍
      • 1.2安装
  • 三.nuitka打包
    • 1.打包
    • 2.装mingw64
    • 3.装ccahe
    • 4.打包完成
  • 四.测试效果
  • 五.inno Setup制作安装软件
    • 1.配置新脚本
  • 六.总结
  • 七.参考


一.前言

上篇文章介绍了如何使用Pyinstaller在虚拟环境下打包PyQt5程序,本篇算是上篇的进阶,本篇将详细演示如何使用nuitka对PyQt5程序打包,使用inno Setup制作安装软件。
通过阅读本篇博文,你能够学会:
1.如何使用nuitka打包PyQt5程序并且提高代码执行效率
2.inno Setup的使用,将打包好的程序缩小体积制作成安装软件

二.准备

1.nuitka

1.1介绍

Nuitka是一个Python的替代编译器。它可以无缝地替代和扩展Python的解释和编译工作。截止2021年8月,支持Python2 (2.6, 2.7) 和 Python3 (3.3 - 3.9)版本 [4] 。它可以执行编译的代码,并能用很兼容的方式将目标代码一起编译。
开发者可以自由的使用所有的Python模块库和其他全部的第三方扩展库。Nuitka可以将Python代码编译成C级别的程序,并像CPython调用libpython一样去使用libpython库去执行编译后的程序。Nuitka的这些的优化工作旨在是为了能够避免Python执行过程中的在某个环节产生的不必要的开销。并旨在能够是消除一些不兼容性,虽然这是一种改进了的模式,但也不是每个标准Python的bug都能模拟,例如,提供更完整的错误信息。
在这里插入图片描述

1.3项目地址

https://github.com/Nuitka/Nuitka
在这里插入图片描述
可以看到star快到1W了

1.3安装

直接使用python的包管理工具安装即可:

pip install nuitka

在这里插入图片描述
输入下面命令可查看nuitak 版本

nuitak --version

在这里插入图片描述

2.mingw64

1.1介绍

MinGW,是Minimalist GNUfor Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。MinGW 是一组包含文件和端口库,其功能是允许控制台模式的程序使用微软的标准C运行时(C Runtime)库(MSVCRT.DLL),该库在所有的 NT OS 上有效,在所有的 Windows 95发行版以上的 Windows OS 有效,使用基本运行时,你可以使用 GCC 写控制台模式的符合美国标准化组织(ANSI)程序,可以使用微软提供的 C 运行时(C Runtime)扩展,与基本运行时相结合,就可以有充分的权利既使用 CRT(C Runtime)又使用 WindowsAPI功能。
在这里插入图片描述

1.2下载安装

通过下面链接地址可下载
https://www.mingw-w64.org/downloads/
本次采用nuitka连带自动mingw64的,这里对下载、安装不做赘述。

3.Inno Setup

1.1介绍

这是一款老牌免费的 Windows 安装程序制作软件,最早发布于1997年。

Inno Setup用Delphi写成,其官方网站同时也提供源程序免费下载。它虽不能与Installshield这类恐龙级的安装制作软件相比,但也当之无愧算是后起之秀。Inno Setup是一个免费的安装制作软件,小巧、简便、精美是其最大特点,支持pascal脚本,能快速制作出标准Windows2000风格的安装界面,足以完成一般安装任务。
在这里插入图片描述

1.2安装

大家可去官网下载安装,但是不支持中文
https://jrsoftware.org/isinfo.php
本次笔者直接在网络上找到了汉化版,放在了这里

安装完之后你就得到了和我同款的inno Setup软件
在这里插入图片描述

三.nuitka打包

这里是重点
我们使用以下命令对我们的python代码进行打包

1.打包

从项目根目录打开windows资源管理器,按下shift+ctrl+鼠标右键打开power shell,输入下面命令(请自行将xxx.py替换为自己的程序入口文件)

nuitka --mingw64 --standalone --show-progress --show-memory --output-dir=out   --plugin-enable=pyqt5 --windows-disable-console  --windows-icon-from-ico=favicon.ico xxx.py

–mingw64 #默认为已经安装的vs2017去编译,否则就按指定的比如mingw(官方建议)
–standalone 独立环境,这是必须的(否则拷给别人无法使用)
–windows-disable-console 没有CMD控制窗口
–output-dir=out 生成exe到out文件夹下面去
–show-progress 显示编译的进度,很直观
–show-memory 显示内存的占用
–enable-plugin=pyside6 打包pyside6模块的刚需
–plugin-enable=tk-inter 打包tkinter模块的刚需
–plugin-enable=numpy 打包numpy,pandas,matplotlib模块的刚需
–plugin-enable=torch 打包pytorch的刚需
–plugin-enable=tensorflow 打包tensorflow的刚需
–windows-icon-from-ico=你的.ico 软件的图标
–windows-company-name=Windows下软件公司信息
–windows-product-name=Windows下软件名称
–windows-file-version=Windows下软件的信息
–windows-product-version=Windows下软件的产品信息
–windows-file-description=Windows下软件的作用描述
–windows-uac-admin=Windows下用户可以使用管理员权限来安装
–linux-onefile-icon=Linux下的图标位置
–onefile 像pyinstaller打包成单个exe文件
–include-package=复制比如numpy,PyQt5 这些带文件夹的叫包或者轮子
–include-module=复制比如when.py 这些以.py结尾的叫模块
–-include-package-data=包含给定软件包名称中的数据文件,等号后软件包名称。有的时候Nuitka并不能正确分析出一些Python软件包所需要使用的数据文件,在运行程序时提示FileNotFoundError等错误,此时就需要使用该选项。如:–include-package-data=ultralytics
–-include-data-files= 按文件名包含数据文件,等号后的格式为<SRC=DEST>。SRC指的是文件夹的路径,DEST指的是文件夹相对于打包结果的路径,其中DEST只能使用相对路径。如:–include-data-files=/Users/admin/Downloads/yolov5n.pt=./yolov5n.pt
-–include-data-dir= 包含文件夹中的数据文件,等号后的格式为<SRC=DEST>。使用方法与–include-data-files=相同。
–follow-import-to=MODULE/PACKAGE 如果使用该模块,请遵循该模块;如果是一个包,请遵循整个包。可以多次给定。默认为空。
提示:首次打包建议去掉–windows-disable-console,以保留控制台便于排查问题。

打包过程分三个阶段
打包过程下如图
在这里插入图片描述

2.装mingw64

当控制台询问是否安装gcc时, 输入yes进行安装(这里可能安装很慢,因为是访问github,可能需要魔法加速)
在这里插入图片描述

3.装ccahe

ccache(“compiler cache”的缩写)是一个编译器缓存,该工具会高速缓存编译生成的信息,并在编译的特定部分使用高速缓存的信息, 比如头文件,这样就节省了通常使用 cpp 解析这些信息所需要的时间。如果某头文件中包含对其他头文件的引用,ccache会用那个文件的 cpp-parsed版本来取代include声明,不是真正去读取、理解并解释其内容,ccache 只是将最终的文本拷贝到文件中,使得它可以立即被编译。ccache是以空间换取速度,ccache非常适合经常make clean(或删除out目录)后重新编译的情况。

在这里插入图片描述

4.打包完成

在这里插入图片描述

四.测试效果

打包完成后会在项目根目录下的out目录下创建两个文件夹,其中,.dist中为打包程序根目录
在这里插入图片描述
我们找到我们的程序
在这里插入图片描述
单个文件大小约26M
双击运行
在这里插入图片描述
OK没问题,可以去制作安装软件了。

五.inno Setup制作安装软件

1.配置新脚本

打开inno Setup 创建一个新的空脚本文件
在这里插入图片描述
ctrl+n创建一个新项目
在这里插入图片描述
下一步
在这里插入图片描述
在这里配置一下软件信息
在这里插入图片描述
下一步
在这里插入图片描述
这里的主执行文件选择我们打包好的程序入口exe
选择添加文件夹,把刚才的.dist文件夹添加进来
在这里插入图片描述
在这里插入图片描述
下一步
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里选择好语言,我选择了中文和英文,软件能自动做国际化处理
在这里插入图片描述
在这里选择安装软件输出目录,我选择了桌面
设置好安装包icon
在这里插入图片描述
下一步,这里选择默认即可
在这里插入图片描述
之后会询问是否编译,我们选择是
在这里插入图片描述
这里自行选择,我选择了否
在这里插入图片描述
之后软件就会自动编译成安装文件,编译进度见左下角
在这里插入图片描述
待左下角提示完成
在这里插入图片描述
我们的安装文件就生成好了。大小只有30M哦
在这里插入图片描述

六.总结

本次详细演示了如何使用nuitka对我们的PyQt5程序进行打包,使用inno Setup工具将打包后的程序制作成安装程序,极大地减少了软件的占用体积,另外nuitka将py代码二进制的pyd文件提高了软件运行效率,防止了反编译,提高了整体软件的安全性,想多了解nuitka的朋友我会在下方贴几个地址,可以进行相关了解。

在这里插入图片描述

七.参考

mingw64
Nuitka
想了解Python源代码加密吗?现总结如下5大加密混淆手段!
Python与模具
Python 打包工具 Nuitka 入门指南

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序前端开发

目录 前言&#xff1a; 1. 框架选择和项目搭建 2. 小程序页面开发 3. 数据通信和接口调用 4. 性能优化和调试技巧 5. 小程序发布和上线 前言&#xff1a; 当谈到微信小程序前端开发时&#xff0c;我们指的是使用微信小程序框架进行开发的一种方式。在本文中&#xff0c;我…

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(三)

员工分页查询和账号启用禁用功能 1. 员工分页查询1.1 需求分析和设计1.1.1 产品原型1.1.2 接口设计 1.2 代码开发1.2.1 设计DTO类1.2.2 封装PageResult1.2.3 Controller层1.2.4 Service层接口1.2.5 Service层实现类1.2.6 Mapper层 1.3 功能测试1.4 代码完善 2. 启用禁用员工账号…

FPGA与STM32_FSMC总线通信实验

FPGA与STM32_FSMC总线通信实验 内部存储器IP核的参数设置创建IP核FPGA代码STM32标准库的程序 STM32F407 上自带 FSMC 控制器&#xff0c;通过 FSMC 总线的地址复用模式实现STM32 与 FPGA 之间的通信&#xff0c;FPGA 内部建立 RAM 块&#xff0c;FPGA 桥接 STM32 和 RAM 块&…

Python喜羊羊

目录 系列文章 写在前面 绘图基础 画喜羊羊 写在后面 系列文章 序号文章目录直达链接表白系列1浪漫520表白代码https://want595.blog.csdn.net/article/details/1306668812满屏表白代码https://want595.blog.csdn.net/article/details/1297945183跳动的爱心https://want5…

Linux常用命令——bzmore命令

在线Linux命令查询工具 bzmore 查看bzip2压缩过的文本文件的内容 补充说明 bzmore命令用于查看bzip2压缩过的文本文件的内容&#xff0c;当下一屏显示不下时可以实现分屏显示。 语法 bzmore(参数)参数 文件&#xff1a;指定要分屏显示的.bz2压缩包。 在线Linux命令查询…

AD9371 Crossbar 和 I、Q数据 映射JESD204B传输层

AD9371 系列快速入口 AD9371ZCU102 移植到 ZCU106 &#xff1a; AD9371 官方例程构建及单音信号收发 ad9371_tx_jesd -->util_ad9371_xcvr接口映射&#xff1a; AD9371 官方例程之 tx_jesd 与 xcvr接口映射 AD9371 官方例程 时钟间的关系与生成 &#xff1a; AD9371 官方…

Win10文件资源管理器卡顿不流畅的解决方法

在Win10电脑中&#xff0c;用户点击打开文件资源管理器&#xff0c;发现文件资源管理器变得卡顿不流畅了&#xff0c;非常影响用户的操作效率。接下来小编给大家带来了最简单的解决方法&#xff0c;解决后用户再去操作Win10系统的文件资源管理器&#xff0c;就会发现变得顺畅不…

主成分分析法(PCA)的理解(附python代码案例)

目录 一、PCA简介二、举个例子三、计算过程&#xff08;公式&#xff09;3.0 题干假设3.1 标准化3.2 计算协方差矩阵3.3 计算特征值和特征值向量3.3 多重共线性检验&#xff08;可跳过&#xff09;3.4 适合性检验&#xff08;可跳过&#xff09;3.5 计算主成分贡献率及累计贡献…

第七章 :Spring Boot web开发常用注解(二)

第七章 :Spring Boot web开发常用注解(二) 前言 本章节知识重点:作者结合自身开发经验,以及觉察到的一个现象:Springboot注解全面理解和掌握的并不多,对注解进行了全面总结,共分两个章节,可以作为web开发工程师注解参考手册,SpringBoot常用注解大全,一目了然!。本…

【码银送书第十期】《强化学习:原理与Python实战》

目录 1.什么是人工智能对齐 2.为什么要研究人工智能对齐 3.人工智能对齐的常见方法 1.什么是人工智能对齐 人工智能对齐&#xff08;AI Alignment&#xff09;指让人工智能的行为符合人的意图和价值观。 人工智能系统可能会出现“不对齐”&#xff08;misalign&#xff09;的…

助力细胞分选,“量身定做”您的磁珠

免疫磁珠因结合了固化试剂特有的优点与免疫学反应的高度特异性而渗透到病理、生理、药理、微生物、生化以及分子遗传学等各个领域。其中&#xff0c;随着细胞分选技术的不断发展&#xff0c;免疫磁珠细胞分选技术已越来越受到研究者的认可&#xff0c;磁珠细胞分选可以从异质细…

linux:使用nc(netcat)命令进行端口检测,并使用Docker管理容器

需求&#xff1a; 循环检测IP:端口是否能正常连接&#xff0c;能连接则关闭docker服务&#xff0c;不能连接则开启docker服务实现&#xff1a;  &esmp;通过创建linux可执行shell脚本文件&#xff0c;再设置crontab调度执行实现上述需求。详细步骤如下&#xff1a; 创建sh…

matlab中的iddata函数的初步理解和使用程序举例

matlab中的iddata函数的初步理解和程序举例 一、iddata函数功能 iddata函数常用于系统识别分析领域数据分析方面。该函数在时域或频域中&#xff0c;将用于系统识别的输入输出数据及其特性数据的生成对象数据类型。即&#xff0c;可以使用iddata函数封装要标识的系统的输入和…

文件扩展名批量修改:txt文件扩展名批量修改为doc文档,高效办公的方法

在我们的日常工作中&#xff0c;经常需要处理大量的文本文件&#xff0c;这些文件可能以.txt为扩展名&#xff0c;而我们需要将其修改为.doc扩展名以方便进一步的操作。这种情况下&#xff0c;我们引用云炫文件管理器来将扩展名批量修改&#xff0c;提升办公的效率。在进行文件…

万物皆数——用matlab求解二阶微分方程

一、背景 毕达哥拉斯的“万物皆数”哲学观点表达了一个理念&#xff0c;即宇宙万物都可以通过数学语言来描述&#xff0c;数是万物的本原。 勾股定理就是毕达哥拉斯提出&#xff0c;因此在西方勾股定理也被叫做毕达哥拉斯定理。 工科类的专业&#xff0c;越到后面越感觉到数学…

从开源项目聊鱼眼相机的“360全景拼接”

目录 概述 从360全景的背景讲起 跨过参数标定聊透视变化 拼接图片后处理 参考文献 概述 写这篇文章的原因完全源于开源项目(GitHub参阅参考文献1)。该项目涵盖了环视系统的较为全貌的制作过程&#xff0c;包含完整的标定、投影、拼接和实时运行流程。该篇文章主要是梳理全…

Wincc flexible SMART v4 报警蜂鸣器的基本使用方法示例

Wincc flexible SMART v4 报警蜂鸣器的基本使用方法示例 WinCC flexible SMART V4 SP1 软件针对SMART LINE V4 面板新增了触发蜂鸣器报警功能,但要注意该功能仅支持固件版本为 4.0.1.0 及以上的设备。 可通过配置以下两个系统函数来触发蜂鸣器: 举例说明: 组态离散量报警,在…

xss 通过秘籍

终极测试代码 <sCr<ScRiPt>IPT>OonN"\/(hrHRefEF)</sCr</ScRiPt>IPT> 第一关&#xff08;没有任何过滤&#xff09; 使用终极测试代码&#xff0c;查看源码 发现没有任何过滤&#xff0c;直接使用javascrupt中的alert弹框 <script>aler…

树之二叉排序树(二叉搜索树)

什么是排序树 说一下普通二叉树可不是左小右大的 插入的新节点是以叶子形式进行插入的 二叉排序树的中序遍历结果是一个升序的序列 下面是两个典型的二叉排序树 二叉排序树的操作 构造树的过程即是对无序序列进行排序的过程。 存储结构 通常采用二叉链表作为存储结构 不能 …

口水战,余承东从没输过,小鹏最终只能低头和解

小鹏汽车创始人何小鹏近日发言称与余承东握手言和&#xff0c;感谢余总的大度&#xff0c;还表示与余承东探讨了技术路线&#xff0c;双方成为好朋友&#xff0c;可以看出这场口水战最终的赢家还是余承东。 这场口水战先以何小鹏吐槽友商的AEB误触太多&#xff0c;还声言99%是假…