【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"就会自动从GitHub上下载安装了。虽然有点慢,但建议让它自动安装

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" 

提示:
1.如果编译得到的exe文件无法打开(闪退),很有可能是缺少某些文件或者模块,可以在cmd窗口运行exe文件这样能看到报错信息,若cmd中不显示信息,那就在编译的时候不要设置--windows-disable-console

2.操作之前先退出全部卫士类软件避免被拦截

3.如果电脑上安装了微信开发者工具,需要先把它从系统环境变量删掉,不然它会直接读取微信开发者工具中的msvcrt.dll,并且一定会因为路径的中文字符导致它报错

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰冷的希望

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值