PyQt5写好的py文件生成可执行的exe文件【Nuitka】

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=uineed为你需要编译成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.dllqt5widgets.dll
qt5qml.dllqt5core.dll
qt5qmlmodels.dllqt5core.dll
qt5printsupport.dll
qt5multimedia.dll
qt5network.dll
qt5dbus.dllqt5gui.dll
qt5quick.dll
qt5svg.dll
qt5svg.dll
msvcp140.dll
msvcp140_1.dll
libssl-1_1.dlllibffi-7.dll
libcrypto-1_1.dll
libeay32.dll
ssleay32.dll
ucrtbase.dll
concrt140.dll
vcruntime140.dllvcruntime140_1.dll
python39.dllpython3.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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值