nuitka打包python程序
1. 安装 Nuitka
在使用 Nuitka 之前,你需要确保已安装 Nuitka 及其依赖项。可以通过以下命令安装 Nuitka:
pip install nuitka
为了让 Nuitka 编译出高效的二进制文件,还需要安装 C 编译器(如 MinGW
或者 MSVC
):
- Windows:推荐使用
MinGW
或者MSVC
编译器。
在安装过程中如遇到以下两个错误
(1)
Nuitka: Downloading 'https://github.com/brechtsanders/winlibs_mingw/releases/download/14.2.0posix-19.1.1-12.0.0-msvcrt-r2/winlibs-x86_64-posix-seh-gcc-14.2.0-llvm-19.1.1-mingw-w64msvcrt-12.0.0-r2.zip'.
FATAL: Failed to download 'https://github.com/brechtsanders/winlibs_mingw/releases/download/14.2.0posix-19.1.1-12.0.0-msvcrt-r2/winlibs-x86_64-posix-seh-gcc-14.2.0-llvm-19.1.1-mingw-w64msvcrt-12.0.0-r2.zip' due to
'Remote end closed connection without response'. Contents should manually be copied to 'C:\Users\jonvy.you\AppData\Local\Nuitka\Nuitka\Cache\DOWNLO~1\gcc\x86_64\14.2.0posix-19.1.1-12.0.0-msvcrt-r2\winlibs-x86_64-posix-seh-gcc-14.2.0
-llvm-19.1.1-mingw-w64msvcrt-12.0.0-r2.zip'.
(2)
Nuitka: Downloading 'https://dependencywalker.com/depends22_x64.zip'.
FATAL: Failed to download 'https://dependencywalker.com/depends22_x64.zip' due to '[WinError 10054] An existing connection was forcibly closed by the remote host'. Contents should manually be copied to 'C:\Users\jonvy.you\A
ppData\Local\Nuitka\Nuitka\Cache\DOWNLO~1\depends\x86_64\depends22_x64.zip'.
需手工下载需要的文件,放入上述指定的用户文件夹内
2. 编译python代码
命令行输入:
(假设python文件为 asyn.py)
nuitka --onefile --standalone --enable-plugin=tk-inter --mingw64 asyn_yolo.py
不需要tk-inter GUI
nuitka --onefile --standalone --mingw64 asyn_yolo.py
以下命令,不打包成一个文件,文件会比较小:
nuitka --standalone --mingw64 asyn_yolo.py
如果误报病毒:
优化编译过程
-
--prefer-source-code
: 强制 Nuitka 使用 Python 源代码而不是字节码,这有助于进行更彻底的优化。 -
--lto=yes
: 启用链接时优化 (Link Time Optimization)。这通常需要你的 C 编译器支持,并且可以产生更小、更快的可执行文件,也可能减少一些可疑的模式。
nuitka --standalone --mingw64 --deployment --prefer-source-code --lto=yes asyn_yolo.py