【Python】使用nuitka打包Python程序为EXE可执行程序

1.说明

写好的Python程序如果想要拿到其他电脑上运行,那还得安装一下Python环境和各种库,这是比较麻烦的,所以有必要把它打包成一个可执行的exe文件。可以打包exe的库有好多个,比如说pyinstaller、cx_Freeze等。

pyinstaller打包比较简单,如果有需要可以参考之前的文章【Python】使用pyinstaller打包Python程序为EXE可执行程序

但是使用pyinstaller打包出来的程序被360报毒了(主要是我的代码有系统权限操作,会触发报毒机制),后来换成nuitka打包就没有报毒

2.安装环境

最方便的安装方式就是使用pip安装

pip install nuitka

因为nuitka是通过c++的方式进行编译的,所以还需要c++的编译环境,可以手动安装一下
下载链接:https://winlibs.com/#download-release
建议下载压缩包版,之后手动添加到环境变量,即在cmd输入gcc -v能看到版本信息就应该没问题了

其实不手动安装也行,因为使用nuitka的时候它检测到没有安装就会提示你安装了,到时候输入"yes"就会自动安装了

3.打包

在cmd使用nuitka命令加上要打包的py文件就行了,当然,我们需要看看它有哪些好用的选项
nuitka --help就能看到用法,这里列出几个比较常用的选项

选项 说明
--standalone 打包成单独的程序(可以拿到其他电脑使用)
--enable-plugin 指定需要加载的插件,比如说tk-inter、pyqt5等
--plugin-list 查看支持的插件
--output-dir 输出目录,不指定则是当前工作目录
--onefile 打包成一个文件,即把全部文件压缩成一个(默认是多个文件和文件夹)
--windows-disable-console 隐藏控制台窗口
--show-progress 显示打包进度
--show-memory 显示内存占用情况
--remove-output 打包结束之后自动清理build文件夹
--windows-icon-from-ico 指定程序图标(针对Windows系统)
--mingw64 指定使用MinGW6编译(默认是MSYS2)
--msvc 指定使用MSVC的版本,不指定则使用系统默认版本
--company-name 公司名
--product-name 产品名
--file-version 文件版本,最多4个数字序列,例如1.0、1.0.0.0
--product-version 产品版本,规则与–file-version相同
--file-description 文件描述

下面给出几个命令案例吧

# 使用默认参数打包file_downloader.py
nuitka --standalone "E:\python_downloader\file_downloader_gui.py" 

# 指定使用MinGW6编译,使用tkinter插件,隐藏控制台,指定程序图标
nuitka --standalone --mingw64 --enable-plugin=tk-inter --windows-disable-console --windows-icon-from-ico="E:\python_downloader\images\ico\file_downloader.ico" "E:\python_downloader\file_downloader_gui.py" 

# 显示进度、内存信息,清理build文件夹
nuitka --standalone --windows-disable-console --show-progress --show-memory --remove-output "E:\python_downloader\file_downloader.py"

# 设置产品信息
nuitka --standalone --company-name=icy --product-name=file_downloader --file-version=1.0 --product-version=1.0 --file-description="多线程下载器"  "E:\python_downloader\file_downloader_gui.py" 

# 把需要的都加上吧
nuitka --standalone --mingw64 --enable-plugin=tk-inter --windows-disable-console --show-progress --show-memory --remove-output --windows-icon-from-ico="E:\python_downloader\images\ico\file_downloader.ico" --company-name=icy --product-name=file_downloader --file-version=1.0 --product-version=1.0 --file-description="多线程下载器"  "E:\python_downloader\file_downloader_gui.py" 

提示:如果编译得到的exe文件无法打开(闪退),很有可能是缺少某些文件或者模块,可以在cmd窗口运行exe文件这样能看到报错信息

猜你喜欢

转载自blog.csdn.net/qq_39147299/article/details/132059296