Qt第二十六章:Nuitka打包教程

news2024/11/25 1:08:44
  1. Nuitka环境安装
    ①下载gcc文件。提取码:8888百度网盘 请输入提取码
    ②解压nuitka1.0.6版本,我们解压64位的。

    ③设置环境变量


    ④检测一下
    gcc.exe --version

  2. 安装nuitka
    pip install nuitka
    pip install ordered-set

     

  3. 防止环境变量不生效,重启项目、重启电脑

  4. 打包常用命令。使用nuitka --help可查看所有命令
    --mingw64 #默认为已经安装的vs2017去编译,否则就按指定的比如mingw(官方建议)
    --standalone 独立环境,这是必须的(否则拷给别人无法使用)
    --windows-disable-console 没有CMD控制窗口
    --output-dir=out 生成exe到out文件夹下面去
    --show-progress 显示编译的进度,很直观
    --show-memory 显示内存的占用
    --enable-plugin=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文件(2021年我会再出教程来解释)
    --include-package=复制比如numpy,PyQt5 这些带文件夹的叫包或者轮子
    --include-module=复制比如when.py 这些以.py结尾的叫模块
  5. 常规打包一段简单的pyside代码
     
    from PySide6.QtCore import QRect
    from PySide6.QtWidgets import QApplication,QWidget, QPushButton, QLineEdit
    
    
    class Form(QWidget):
        def __init__(self, parent=None):
            super(Form, self).__init__(parent=parent)
            self.setWindowTitle("首次")
            self.resize(320, 180)
            # 按钮
            button = QPushButton(self)
            button.setText("提交")
            # 位置(x,y,width,height)
            button.setGeometry(QRect(150, 50, 100, 50))
            button.clicked.connect(lambda: print(edit.text()))
            # 单行输入框
            edit = QLineEdit(self)
            edit.setPlaceholderText("请输入密钥")
            # 位置(x,y,width,height)
            edit.setGeometry(QRect(10, 10, 100, 50))
    
    
    if __name__ == '__main__':
        app = QApplication([])
        form = Form()
        form.show()
        app.exec()
    
    打包命令:
    ​nuitka --mingw64 --standalone --show-progress --show-memory --output-dir=out --enable-plugin=pyside6 main.py
    会发现无法下载GitHub的文件,我们手动下载一下,然后放到提示的目录中

    然后一路yes即可打包完成

    打开打包后的exe文件:秒开!(为了调试方便,我这里没有隐藏黑窗口)
  6. 升级:只编译我们自己编写的代码。引用的代码全部使用pyd来访问。
    在根目录新建文件夹need用来存放我们自己的代码

    最外层只放一个启动类main.py

    打包:跟第5步打包命不同,在基础上加了:--nofollow-imports  --follow-import-to=need
    nuitka --mingw64 --standalone --show-progress --show-memory --output-dir=out --enable-plugin=pyside6 --nofollow-imports --follow-import-to=need main.py

     打包的速度的成功率将会高很多。

  7. 包缺失
    pip install numpy
    现在我们在上一步的代码中加入一句:

    然后进行打包,并启动,发现闪退,说明打的包有问题
    我们使用黑窗口打开刚刚打包好的main.exe

    我们从venv/lib/site-packages下找到numpy包,复制到disk目录中

    然后再执行main.exe即可正常运行

    所有缺失的包都可以这样处理!!!
  8.  pyd略

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

相关文章

【Redis】Redis介绍

文章目录1.NoSQL数据库1.1NoSQL适用场景1.2常用的NoSQL1.3Redis介绍1.4Redis的使用场景1.5Redis默认按照目录1.6Redis的启动1.7Redis是单线程多路IO复用技术1.NoSQL数据库 NoSQL(NoSQL Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。 NoS…

学生HTML个人网页作业作品 (服装商城HTML+CSS)

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 在线商城购物 | 水果商城 | 商城系统建设 | 多平台移动商城 | H5微商城购物商城项目 | HTML期末大学生网页设计作业,Web大学生网页 HTML&a…

RK3588平台开发系列讲解(Pinctrl篇)Pinctrl设备树介绍

平台内核版本安卓版本RK3588Linux 5.10Android12🚀返回专栏总目录 文章目录 一、 DTS介绍二、新建pinctrl三、引用pinctrl沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍pinctrl设备树的使用方法。 一、 DTS介绍 RK芯片的设备树⼀般把pinctrl节点放在soc…

元宇宙数字藏品,打造数字经济产业,实现全新业态升级

《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》提出以数字化转型整体驱动生产方式、生活方式和治理方式变革,催生新产业新业态新模式,壮大经济发展新引擎,将“虚拟现实和增强现实”列入了数字经济重点产业。 而自…

GAN生成漫画脸

最近对对抗生成网络GAN比较感兴趣,相关知识点文章还在编辑中,以下这个是一个练手的小项目~ (在原模型上做了,为了减少计算量让其好训练一些。) 一、导入工具包 import tensorflow as tf from tensorflow.keras import layersimport numpy a…

tinymce富文本编辑器做评论区

今天分享一下tinymce富文本编辑器做评论区的全过程。 文章目录一、介绍1.最终效果2.功能介绍3.主要项目包版本介绍:二、每个功能的实现1.自定义toolbar的功能区①对应的样式以及意义②对应的代码实现【忽略了一切非实现该功能的代码】2.展示、收起评论区①对应的样式…

ctf工具之:mitmproxy实践测试

1、安装居然使用的pip pip install mitmproxy 导入证书,密码为空 2、启用mitmweb pause 直接可以查看方式 搜索里输入login 对于http协议 直接看到了密码原文 3、后台日志方式 录入和回放 mitmdump -w baidu.txt pause 录制结束 mitmdump -nC baidu.txt paus…

如何设计可扩展架构

架构设计复杂度模型 业务复杂度和质量复杂度是正交的 业务复杂度 业务固有的复杂度,主要体现为难以理解、难以扩展,例如服务数量多、业务流程长、业务之间关系复杂 质量复杂度 高性能、高可用、成本、安全等质量属性的要求 架构复杂度应对之道 复杂…

MySQL备份与恢复

目录 一.数据备份的重要性 二.数据库备份的分类 2.1 物理备份 2.2 逻辑备份 2.3 完全备份(只适合第一次) 三.常见的备份方法 四.MySQL完全备份 4.1 MySQL完全备份优缺点 4.2 数据库完全备份分类 4.2.1 物理冷备份与恢复 五.完全备份 5.1 MySQ…

YOLO家族再度升级——阿里达摩院DAMO-YOLO重磅来袭

最近看到阿里达摩院发表了他们的最新研究成果,在YOLO系列上推出的新的模型DAMO-YOLO,还没有来得及去仔细了解一下,这里只是简单介绍下,后面有时间的话再详细研究下。 官方项目在这里,首页截图如下所示: 目…

ASEMI整流桥UD4KB100,UD4KB100体积,UD4KB100大小

编辑-Z ASEMI整流桥UD4KB100参数: 型号:UD4KB100 最大重复峰值反向电压(VRRM):1000V 最大平均正向整流输出电流(IF):4A 峰值正向浪涌电流(IFSM)&#xf…

堆(C语言实现)

文章目录:1.堆的概念2.堆的性质3.堆的结构4.接口实现4.1初始化堆4.2销毁堆4.3打印堆内元素4.4向上调整4.5向堆中插入数据4.6向下调整4.7删除堆顶元素4.8查看堆顶元素4.9统计堆内数据个数4.10判断堆是否为空4.11堆的构建1.堆的概念 如果有一个关键码的集合&#xff0…

【Redis】缓存更新策略

1. 缓存更新策略综述 内存淘汰 不用自己维护,利用 Redis 自己的内存淘汰机制 (内存不足时,触发策略,默认开启,可自己配置),其可在一定程度上保持数据一致性 超时剔除 给数据添加 TTL&#x…

【电力运维】浅谈电力通信与泛在电力物联网技术的应用与发展

摘要:随着我国社会经济的快速发展,我国科技实力得到了巨大的提升,当前互联网通信技术在社会中得到了广泛的应用。随着电力通信技术的快速发展与更新,泛在电力物联网建设成为电力通讯发展的重要方向。本文已泛在电力物联网系统为核…

Docker使用

xshell和xftp软件下载 链接:https://pan.baidu.com/s/1G7DIw14UvOmTwU9SwtYILg 提取码:he18 --来自百度网盘超级会员V6的分享 docker相关资料: 链接:https://pan.baidu.com/s/1VcxvuJvBIKNKnUUHPlM3MA 提取码:6w5e …

一些常见的项目管理 KPI

本文将介绍一些常见的项目管理kpi,让大家更深刻的了解其作用及所存在的问题。 一、关键绩效指标的作用 在 GPS 和其他现代导航方法出现之前,水手和探险家们只能通过星星找到正确的方向。特别是在北半球,他们利用北极星找出真正的北方方位。…

[附源码]SSM计算机毕业设计医学季节性疾病筛查系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Mysql高频面试题(一)

文章目录1. Mysql如何实现的索引机制?2. InnoDB索引与MyISAM索引实现的区别是什么?3. 一个表中如果没有创建索引,那么还会创建B树吗?4. B树索引实现原理(数据结构)5. 聚簇索引与非聚簇索引的B树实现有什么区…

Vector源码分析

Vector源码分析 1 Vector基本介绍与类图 Vector 类实现了一个动态数组。和 ArrayList 很相似,但是两者是不同的: Vector 是同步访问的。Vector 包含了许多传统的方法,这些方法不属于集合框架。Vector 主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的…

pytest + yaml 框架 - 1.我们发布上线了!

前言 基于 httprunner 框架的用例结构,我自己开发了一个pytest yaml 的框架,那么是不是重复造轮子呢? 不可否认 httprunner 框架设计非常优秀,但是也有缺点,httprunner3.x的版本虽然也是基于pytest框架设计&#xff…