当前位置: 首页 > news >正文

【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文件这样能看到报错信息

http://www.lryc.cn/news/106246.html

相关文章:

  • 背景图片及精灵图
  • 简要介绍 | 生成模型的演进:从自编码器(AE)到变分自编码器(VAE)和生成对抗网络(GAN),再到扩散模型
  • 8.2Thread类的常见属性
  • 博客摘录「 mvvm框架工作原理及优缺」2023年7月31日
  • 第12章 Linux 实操篇-Linux磁盘分区、挂载
  • 使用express搭建后端服务
  • 深度学习——划分自定义数据集
  • Jmeter性能测试之正则表达式提取器
  • 浅谈Kubernetes中Service网络实现(服务发现)
  • 【重造轮子】golang实现可重入锁
  • torch显存分析——对生成模型清除显存
  • electron+vue+ts窗口间通信
  • 基于Fringe-Projection环形投影技术的人脸三维形状提取算法matlab仿真
  • 如何使用Webman框架实现多语言支持和国际化功能?
  • 接受平庸,特别是程序员
  • HTML兼容性
  • Java日期和时间处理入门指南
  • anndata k折交叉
  • 深入解析项目管理中的用户流程图
  • Vue使用QrcodeVue生成二维码并下载
  • “用户登录”测试用例总结
  • 适应于Linux系统的三种安装包格式 .tar.gz、.deb、rpm
  • Linux lvs负载均衡
  • Tomcat 创建https
  • 超导电性的基本现象和相关理论
  • 在 PHP 中单引号(‘ ‘)和双引号(“ “)用法的区别
  • SpringCloudAlibaba:服务网关之Gateway的cors跨域问题
  • react中的高阶组件理解与使用
  • “从零开始学习Spring Boot:构建高效的Java应用程序“
  • 容器部署jenkins定时构建于本地时间不一致