文章目录
- 1.Nuitka引入
- 2.Nuitka与Pyinstaller对比
- Nuitka安装
- 3.Nuitka指令
- 4.参数以及作用
- 5.多文件格式封装完成后可删除文件
- 6.运行问题
- 问题1
- 问题2
1.Nuitka引入
看过我上一篇PyQt5写好的py文件生成可执行的exe文件【Pyinstaller】的应该了解到用PyQt5写的界面程序可以通过Pyinstaller打包成exe可执行程序,那么打包程序就这一种方式吗?当然不是,本章将介绍另一个大杀器,它的名字叫做Nuitka!
那么有人可能就要问了,Pyinstaller已经可以将PyQt5打包成exe可执行程序了,为什么还需要介绍Nuitka,结果都是可执行文件,没什么区别嘛?!
No,No,No!区别大了去了!Pyinstaller打包程序虽然指令简单,打包速度快,非常适合小白使用,但是长剑在手其比不好挥舞,它的问题就是打包完成的程序会占用很大的内存,并且实际运行时点击exe文件后一般需要等个十几秒才会响应,这就让人很膈应了,要知道目标检测的模型目前追求的大致包括三个方向,一是精确度,而是轻量化,三便是实时性,好家伙,Pyinstaller跟第一个不沾边,另两条完全不满足,非要我概括就是四肢发达头脑简单,毕竟人都有爱美之心,我们肯定喜欢文静内敛但不失风度的美男子,Nuitka就是这个美男子!同样的,风险与收益并存,Nuitka也并非全身都是优点,人非圣贤,孰能无过!那Nuitka的优缺点各是啥呢?
2.Nuitka与Pyinstaller对比
简单的来说,Nuitka就是Pyinstaller的相对面,Nuitka打包完成的程序启动快,内存小,使用简直让人心旷神怡、想入非非,但是缺点就是生成exe可执行程序时指令太多,比较繁琐。
好啦,介绍到这里,大家需要了解的就够了,毕竟我们也不需要去写这个打包程序,大家只要知道怎么用就可以了,啊啊啊,才发现我说了这么多废话,大家是不是等不及了,让我们进入正文吧!
Nuitka安装
Nuitka也是Python的第三方库,因此需要进行安装,安装命令是pip install Nuitka -i https://pypi.tuna.tsinghua.edu.cn/simple
3.Nuitka指令
示例:
将界面py文件和需要调用的文件放在一个文件夹,main.py与ui文件夹放在一块:


代码:
nuitka --standalone --onefile --windows-disable-console --mingw64 --nofollow-imports --show-memory --show-progress --plugin-enable=pyqt5 --include-qt-plugins=sensible,styles --windows-icon-from-ico=ui/window_icon.ico --follow-import-to=ui --output-dir=o main.py
4.参数以及作用
| 参数 | 作用 |
|---|---|
| –standalone | 独立环境(这是必须的,否则拷给别人无法使用) |
| –windows-disable-console | 不显示控制台窗口 |
| –mingw64 | 默认为已经安装的vs2017去编译,否则就按指定的比如mingw |
| –nofollow-imports | 所有的import不编译,交给python3x.dll执行 |
| –show-memory | 显示内存的占用 |
| –show-progress | 显示编译的进度,很直观 |
| –remove-output | 删除编译过程文件 |
| –plugin-enable=pyqt5 | 需要加载的PyQt插件 |
| –plugin-enable=numpy | 打包numpy,pandas,matplotlib模块的刚需 |
| –plugin-enable=pytorch | 打包pytorch的刚需 |
| –plugin-enable=upx | 打包压缩 |
| –include-qt-plugins=sensible,styles | 打包后PyQt的样式就不会变了 |
| –windows-icon-from-ico=你的.ico | 软件图标 |
| –windows-product-name=软件名称 | 软件名称 |
| –onefile | 打包成单个exe文件(与–standalone不放在一起) |
| –follow-import-to=ui | need为你需要编译成C/C++的py文件夹命名 |
| –follow-import-to=need --follow-import-to=a --follow-import-to=b | 修改所有的文件夹路径,全部放在need下,这样最省事 , 可以一直添加 |
| –output-dir=o | 生成exe到o文件夹下面去 |
5.多文件格式封装完成后可删除文件
| 可以删除的dll | 不可删除 |
|---|---|
| api-开头全部文件 | 生成exe到o文件夹下面去 |
| qt5websockets.dll | qt5widgets.dll |
| qt5qml.dll | qt5core.dll |
| qt5qmlmodels.dll | qt5core.dll |
| qt5printsupport.dll | |
| qt5multimedia.dll | |
| qt5network.dll | |
| qt5dbus.dll | qt5gui.dll |
| qt5quick.dll | |
| qt5svg.dll | |
| qt5svg.dll | |
| msvcp140.dll | |
| msvcp140_1.dll | |
| libssl-1_1.dll | libffi-7.dll |
| libcrypto-1_1.dll | |
| libeay32.dll | |
| ssleay32.dll | |
| ucrtbase.dll | |
| concrt140.dll | |
| vcruntime140.dll | vcruntime140_1.dll |
| python39.dll | python3.dll |
| 可以删除的pyd | 不可删除 |
| _bounded_integers.pyd | _ctypes.pyd |
| _socket.pyd | |
| _decimal.pyd | |
| _hashlib.pyd | |
| _lzma.pyd | |
| select.pyd | |
| unicodedata.pyd | |
| _bz2.pyd | |
| _ssl.pyd |
6.运行问题
问题1
文件下载地址:ccache-4.6-windows-32.zip
下载解压到 C:\Users\Administrator\AppData\Local\Nuitka\Nuitka\Cache\downloads\ccache\v4.6

问题2
文件下载地址:epends22_x64.zip
下载解压到 C:\Users\Administrator\AppData\Local\Nuitka\Nuitka\Cache\downloads\depends\x86_64




















