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

本文主要是介绍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 入门指南

这篇关于python3GUI--PyQt5打包心得(二)nuitka、inno Setup(详细图文演示、附所有软件)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/389190

相关文章

springboot3打包成war包,用tomcat8启动

1、在pom中,将打包类型改为war <packaging>war</packaging> 2、pom中排除SpringBoot内置的Tomcat容器并添加Tomcat依赖,用于编译和测试,         *依赖时一定设置 scope 为 provided (相当于 tomcat 依赖只在本地运行和测试的时候有效,         打包的时候会排除这个依赖)<scope>provided

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

免费也能高质量!2024年免费录屏软件深度对比评测

我公司因为客户覆盖面广的原因经常会开远程会议,有时候说的内容比较广需要引用多份的数据,我记录起来有一定难度,所以一般都用录屏工具来记录会议内容。这次我们来一起探索有什么免费录屏工具可以提高我们的工作效率吧。 1.福晰录屏大师 链接直达:https://www.foxitsoftware.cn/REC/  录屏软件录屏功能就是本职,这款录屏工具在录屏模式上提供了多种选项,可以选择屏幕录制、窗口

arduino ide安装详细步骤

​ 大家好,我是程序员小羊! 前言: Arduino IDE 是一个专为编程 Arduino 微控制器设计的集成开发环境,使用起来非常方便。下面将介绍如何在不同平台上安装 Arduino IDE 的详细步骤,包括 Windows、Mac 和 Linux 系统。 一、在 Windows 上安装 Arduino IDE 1. 下载 Arduino IDE 打开 Arduino 官网

HomeBank:开源免费的个人财务管理软件

在个人财务管理领域,找到一个既免费又开源的解决方案并非易事。HomeBank&nbsp;正是这样一个项目,它不仅提供了强大的功能,还拥有一个活跃的社区,不断推动其发展和完善。 开源免费:HomeBank 是一个完全开源的项目,用户可以自由地使用、修改和分发。用户友好的界面:提供直观的图形用户界面,使得非技术用户也能轻松上手。数据导入支持:支持从 Quicken、Microsoft Money

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训

PDF 软件如何帮助您编辑、转换和保护文件。

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的 PDF 文档软件需求。 不同的 PDF 文档软件程序可以具有不同的功能,因此在决定哪个是最适合您的 PDF 软件之前,请花点时间评估您的

多路转接之select(fd_set介绍,参数详细介绍),实现非阻塞式网络通信

目录 多路转接之select 引入 介绍 fd_set 函数原型 nfds readfds / writefds / exceptfds readfds  总结  fd_set操作接口  timeout timevalue 结构体 传入值 返回值 代码 注意点 -- 调用函数 select的参数填充  获取新连接 注意点 -- 通信时的调用函数 添加新fd到