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

pip install nuitka==1.0.6
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

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

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

7、包缺失

pip install numpy

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

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

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

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

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

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

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

  • 11
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文子阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值