原创

使用Nuitka将Python程序打包成exe可执行文件

Nuitka是一款可以将Python代码打包成exe可执行文件的工具。相对与其他打包工具,Nuitka会将Python代码转换为C代码后进行编译,可以提升编译后程序的执行效率。记录一下使用Nuitka工具将Python程序打包成exe可执行文件的过程。

一、环境安装

1.安装MSVC编译器

Nuitka会将python代码转换为C程序代码,所以编译的时候依赖C编译器。

可以选择MSVC或者MinGW-w64,因为MSVC对Windows桌面程序的支持更好,所以我们选择安装MSVC编译器。

MSVC是微软的Visual C++开发工具,可以在微软官方下载。

MSVC下载地址:https://visualstudio.microsoft.com/zh-hans/downloads/

进入下载页面后拉到网页底部,点击用于Visual Studio的工具,选择Visual Studio生成工具下载:

下载文件为vs_BuildTools.exe,运行后进入安装程序:

勾选使用C++的桌面开发选项,默认会带上MSVC和Windows SDK,点击安装即可:

2.安装Nuitka

Nuitka可以通过Python的pip工具进行安装,安装命令如下:

pip install nuitka

安装成功后通过下面命令可以查看Nuitka版本:

python -m nuitka --version

这样环境就安装完成了。

二、Nuitka打包命令介绍

其中main_module.py要替换成需要打包的主程序入口文件。

1.打包成单个可执行文件模式

打包命令如下:

python -m nuitka --mode=onefile main_module.py

使用该命令可以将python代码、Python运行环境与第三方依赖打包成单个可执行的exe文件,打包的程序运行的时候会将内容解压到临时目录中运行。

2.打包成文件夹模式

打包命令如下:

python -m nuitka --mode=standalone main_module.py

使用该命令可以将Python代码打包成一个文件夹,文件夹中包含可执行的exe和Python运行环境与所有三方依赖。使用该方式打包的程序运行时不会创建临时目录与文件,所有运行资源都在文件夹中。

3.其他常用打包参数

  • ---windows-console-mode=disable:隐藏控制台窗口,默认值是force强制显示,通过设置为disable隐藏。
  • --include-data-dir=image=image:添加外部目录到程序,命令参数为源目录=目标目录。
  • --windows-icon-from-ico:添加图标。
  • --include-package:添加需要包含的包。
  • --include-module:添加需要包含的模块。
  • --product-name:添加产品名称。
  • --company-name:添加公司名称。
  • --file-version:添加文件版本信息。
  • --product-version:添加产品版本信息。
  • --copyright:添加版权信息。
  • --file-description:添加文件说明。
  • --lto=yes:启用链接时优化,提升程序运行速度。
  • --jobs=2:调整并行编译任务数量。
  • --assume-yes-for-downloads:自动同意下载依赖。
  • --report=report.xml:生成编译报告。

三、实际操作打包python程序

1.开始打包

因为我们需要稳定的运行状态,所以选择打包成文件夹,打包命令如下:

python -m nuitka --standalone --enable-plugin=pyqt6 --include-qt-plugins=multimedia --windows-console-mode=disable --windows-icon-from-ico=app.ico --output-dir=dist --assume-yes-for-downloads --jobs=4 app.py

我们进入需要打包的源码目录,打开cmd窗口执行命令:

2.打包结果

执行打包命令后会在当前文件夹中生成dist文件夹,然后开始下载依赖到其中,打包后的文件会存到dist文件夹下面程序名称.dist件夹中,比如我们的程序名叫app,打包后的名称就会叫app.dist:

文件夹中包含编译后的程序与所有依赖,其中app.exe就是程序入口:

3.测试程序启动

启动程序测试是否可以正常使用:

程序可用正常说明Nuitka已经成功将Python代码打包成可执行文件了。

我们将打包后的dist\app.dist文件夹压缩后,就可以发给小伙伴们一起玩耍了。


扩展说明

1.参考文档:https://nuitka.net/user-documentation/

正文到此结束
本文目录