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


    目录

    1、Nuitka环境安装

    2、安装nuitka

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

    4、打包常用命令。使用nuitka --help可查看所有命令

    5、常规打包一段简单的pyside代码 

    6、升级:只编译我们自己编写的代码。引用的代码全部使用pyd来访问。

    7、包缺失

    8、用 enigmaprotector 再次打包成单个文件比较好


    1、Nuitka环境安装

    ①下载gcc文件。提取码:8888百度网盘 请输入提取码
    ②解压nuitka1.0.6版本,我们解压64位的。

    设置环境变量


    ④检测一下

    gcc.exe --version

    2、安装nuitka(本教程这里的nuitka版本必须是1.0.6

    1. pip install nuitka==1.0.6
    2. pip install ordered-set

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

    4、打包常用命令。使用nuitka --help可查看所有命令

    1. --mingw64 #默认为已经安装的vs2017去编译,否则就按指定的比如mingw(官方建议)
    2. --standalone 独立环境,这是必须的(否则拷给别人无法使用)
    3. --windows-disable-console 没有CMD控制窗口
    4. --output-dir=out 生成exe到out文件夹下面去
    5. --show-progress 显示编译的进度,很直观
    6. --show-memory 显示内存的占用
    7. --enable-plugin=pyside6
    8. --plugin-enable=tk-inter 打包tkinter模块的刚需
    9. --plugin-enable=numpy 打包numpy,pandas,matplotlib模块的刚需
    10. --plugin-enable=torch 打包pytorch的刚需
    11. --plugin-enable=tensorflow 打包tensorflow的刚需
    12. --windows-icon-from-ico=你的.ico 软件的图标
    13. --windows-company-name=Windows下软件公司信息
    14. --windows-product-name=Windows下软件名称
    15. --windows-file-version=Windows下软件的信息
    16. --windows-product-version=Windows下软件的产品信息
    17. --windows-file-description=Windows下软件的作用描述
    18. --windows-uac-admin=Windows下用户可以使用管理员权限来安装
    19. --linux-onefile-icon=Linux下的图标位置
    20. --onefile 像pyinstaller一样打包成单个exe文件(2021年我会再出教程来解释)
    21. --include-package=复制比如numpy,PyQt5 这些带文件夹的叫包或者轮子
    22. --include-module=复制比如when.py 这些以.py结尾的叫模块

    5、常规打包一段简单的pyside代码
     

    1. from PySide6.QtCore import QRect
    2. from PySide6.QtWidgets import QApplication,QWidget, QPushButton, QLineEdit
    3. class Form(QWidget):
    4. def __init__(self, parent=None):
    5. super(Form, self).__init__(parent=parent)
    6. self.setWindowTitle("首次")
    7. self.resize(320, 180)
    8. # 按钮
    9. button = QPushButton(self)
    10. button.setText("提交")
    11. # 位置(x,y,width,height)
    12. button.setGeometry(QRect(150, 50, 100, 50))
    13. button.clicked.connect(lambda: print(edit.text()))
    14. # 单行输入框
    15. edit = QLineEdit(self)
    16. edit.setPlaceholderText("请输入密钥")
    17. # 位置(x,y,width,height)
    18. edit.setGeometry(QRect(10, 10, 100, 50))
    19. if __name__ == '__main__':
    20. app = QApplication([])
    21. form = Form()
    22. form.show()
    23. 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

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

    1. nuitka --follow-imports --show-progress --mingw64 main.py
    2. --follow-imports # 打包import的文件
    3. --standalone # 脱离python环境
    4. --show-progress # 展示打包详情的控制台输出
    5. --include-package=requests # 将requests包打包进exe
    6. --mingw64 # 指定编译器
    7. --plugin-enable=requests # 导入第三方包
    8. -o wenshu.exe # 指定exe名字
    9. --output-dir= # 指定打包后的路径,默认当前路径
    10. --windows-disable-console # 去掉黑窗口
    11. --windows-icon= # 指定图标
    12. nuitka --plugin-list # 查看可用的插件

    7、包缺失

    pip install numpy

    现在我们在上一步的代码中加入一句:

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

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

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

    所有缺失的包都可以这样处理!!!

    8、用 enigmaprotector 再次打包成单个文件比较好

    结尾、扫一扫下方微信名片即可+博主徽信哦 ↓↓ ↓↓ ↓↓ ↓↓ ↓↓ ↓↓ ↓↓ ↓↓  ↓↓↓

  • 相关阅读:
    基于核心素养劳动教育与学科教学融合研究结题报告
    Apache ECharts
    [SM6225][Android13]user版本默认允许root和remount
    【前端学习】—ES6新增的方法有哪些(十五)
    “微信多账号聚合聊天:轻松管理,高效沟通“
    【MySQL系列】MySQL数据库基础
    docker 复习
    BUUCTF [GXYCTF2019]luck_guy
    华夏天信携手华为云开天aPaaS,打造安全、高效、节能的主煤流运输系统
    Linux Namespace
  • 原文地址:https://blog.csdn.net/wenxingchen/article/details/128112544