文章目录
- 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