前言
相较于传统的Python打包工具pyinstaller,Nuitka具有更高的效率和安全性。不过,Nuitka的上手难度稍高。
安装
推荐使用pip安装:1
pip install Nuitka
如果下载缓慢,可以参考这篇文章。
如果要用到--onefile
参数,可以安装zstandard压缩文件:1
pip install zstandard
此外,还需要下载C++编译器MinGW。
使用
使用以下命令即可从main.py
编译生成.exe
文件:1
nuitka --mingw64 main.py
--follow-imports
参数编译所有调用的模块,此时可以用--nofollow-import-to
不编译指定模块。--nofollow-imports
参数不编译所有模块,此时可以用--follow-import-to=
参数编译指定模块。
例如,main.py
中调用了config.py
,那么就要用参数--follow-imports
或--follow-import-to=config.py
。
为了方便移植,可以添加参数--standalone
。--standalone
包含了参数--follow-imports
。1
nuitka --mingw64 --standalone main.py
要打包成单个.exe
文件,需要用到--onefile
参数:1
nuitka --mingw64 --standalone --onefile main.py
程序中调用了某些模块时,需要用到--enable-plugin=
参数调用插件。使用nuitka --plugin-list
可以查看插件列表。例如,tkinter包有--enable-plugin=tk-inter
,PySide6包有--enable-plugin=pyside6
。
对于一个调用了PySide6的程序,就可以用如下命令打包:1
nuitka --mingw64 --standalone --onefile --enable-plugin=pyside6 --windows-disable-console main.py
其中--windows-disable-console
参数会隐藏Windows系统下的控制台。
最后,--show-progress
可以显示编译进度,--show-memory
可以显示内存占用:1
nuitka --mingw64 --standalone --onefile --show-progress --show-memory --enable-plugin=pyside6 --windows-disable-console main.py
Nuitka还有一些常用参数:
--include-data-dir=
:数据文件夹--output-dir=
:输出文件夹--windows-icon-from-ico=
:Windows下的图标