> 文章列表 > Nuitka打包PyQt项目快速上手

Nuitka打包PyQt项目快速上手

Nuitka打包PyQt项目快速上手

之前用pyinstaller打包python程序,听说Nuitka比较快,用它打包PyQt的程序练练手。

Nuitka

问了问chatGPT,总结几点:将python编译成C/C++,提高速率、跨平台、编译后程序直接运行(不需要python解释器)

        Nuitka是一个开源的Python编译器,可以将Python代码转换为C++或C代码,从而提高Python程序的执行效率。它支持Python 2.6、2.7和3.x版本,可在Linux、macOS和Windows等操作系统上运行。

        与传统的解释型Python不同,使用Nuitka编译后的代码可以直接在目标计算机上运行,不需要安装Python解释器。同时,由于部分代码被转换为C++或C语言,因此可以获得更好的性能表现和更小的内存占用。

        除了编译器本身,Nuitka还包含了一些工具和库,例如Nuitka Debugger和Nuitka GUI,以帮助用户更好地管理和调试他们的代码。此外,该项目还拥有一个活跃的社区,提供了详细的文档和示例代码,方便用户学习和使用。

环境配置

使用环境先说一下

window10、python3.6

参考 Python打包exe的王炸-Nuitka - 知乎 (zhihu.com)

1、下载MinGW64 8.1 (用来编译成可执行程序)

2、安装nuitka,pip install nuitka

操练

常用的参数

--mingw64 #默认为已经安装的vs2017去编译,否则就按指定的比如mingw(官方建议)--standalone 独立环境,这是必须的(否则拷给别人无法使用)--windows-disable-console 没有CMD控制窗口--output-dir=out 生成exe到out文件夹下面去--show-progress 显示编译的进度,很直观--show-memory 显示内存的占用--enable-plugin=pyqt5--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结尾的叫模块

打包及问题解决

nuitka --standalone --lto=no --report=report.xml --mingw64 --show-progress --show-memory --nofollow-import-to=pymysql,multiprocessing,http,email --enable-plugin=pyqt5 --output-dir=dis --windows-icon-from-ico=logo.ico main.py

报错提示版本太低:

Nuitka-Scons:INFO: Too old gcc 'C:\\MinGW\\x86_64-8.1.0\\mingw64\\bin\\gcc.exe' ((8, 1, 0) < (11, 2)) ignored!
Nuitka will use gcc from MinGW64 of winlibs to compile on Windows.

WinLibs - GCC+MinGW-w64 compiler for Windows

在这个网址重新下个MinGW,记得解压修复环境变量