知乎转来的、、、Nuitka用法

2023-11-04

Python打包exe的王炸-Nuitka

Python在制造领域的使用
关注
1,726 人 赞同了该文章

python写代码很爽,一直写一直爽!打包的时候就不一定爽鸟
目前最稳定版本-0.6.15(2021-6-6更新 )
Python唯二的难题运行速度和源代码反编译,一直是被众多语言所诟病。今天我们解决这个问题,享受C++的速度,免于反编译的担忧,更多打包技巧与nuitka教程请关注,以下是已经打包成功解决的python模块,包含Win,Linux,MacOS三大系统

  • Pytorch
  • Tensorflow
  • Keras
  • Pandas
  • Scipy
  • Numpy
  • PyqtGraph
  • Pywin32
  • Tkinter
  • Wxpython
  • Matplotlib
  • PyQt5-QtWebEngine
  • PySimpleGUI
  • Pyside2
  • Openpyxl
  • Opencv-python
  • PythonOCC
  • Pyvista -VTK
废话不多说,直接上视频,打包出现Bug的请提供命令和报错信息,有问题请在Github官网提issues。新的Nuitka文章还是会继续总结和更新的,如果有打包失败的模块(上面没有列出来)请留言,可能会成为我们的下一个教程目标
Python打包exe Nuitka

更新高阶版,95%的打包问题在这里可以解决

如果入门还是没有成功,不妨看看其他入门者的心得

遇到常见的bug,解决方案也给你留下(三百群友们的集体智慧)

顺便去github查看其它开发者提的问题,少走弯路

Stack Overflow上面的提问也很多,不失为一个参考,我经常在上面查找

网上可用可操作的例子的不多,实战的更不多,这篇文章将翔实的介绍Nuitka打包python文件,祝各位早日用上Nuitka,不再被其他语言给鄙视
Nuitka项目就是解决这两个难题而生的,看看Nuitka作者Kay Hayen怎么说的,各位想一睹仙容的,去Youtube上去看看历次Pycon DE分享)

经测试,Nuitka打包后的exe比Pyinstaller打包后的exe运行速度提升30%,PyQT5的UI文件转换成py文件转换成C语言后,界面秒开呀。

  • Numpy等类似c程式和pyd的调用还是忽略编译好,不要一咕噜全梭哈啦,编译后反而更慢。重点事项是要小本本记上,别说本豪猪没有提醒呀
  • Nuitka的优化命令阅读本文后再了解下《Nuitka之乾坤大挪移-让天下的Python都可以打包》,打包和调试时间节省到5分钟内。PyQT,Numpy,Scipy,Pandas,Opencv,OpenpyXL等pyd的模块不编译,交给python3x.dll来调用,避免模块依赖失败。生成的UI_xxx.py文件和你编写的py模块(可以包含IP,密码)放到一个下一级的文件夹,设置为必须编译为C/C++。从此你的打包成功率提升到95%,exe打开速度提升到一秒左右
--nofollow-imports  # 所有的import不编译,交给python3x.dll执行
--follow-import-to=need  # need为你需要编译成C/C++的py文件夹命名
  • 其他电脑在使用编译完成后的exe文件,VC运行库至少升级到2015
  • 编译完成后的文件夹名称不能有或修改成中文
  • 打包单个exe的工具
  • 打包单个pyd,加密源码或者密码和IP,也改善打包exe的失败概率
  • nuitka打包pyd进阶版,根据很多群友打包成功,使用失败的案例,更新打包pyd视频解答,解释pyd的运行机制和import须知内容(科普pyd和python的依赖关系,这方面的误解太多太深)
  • MacOS系统下的打包,不需要配置gcc
  • Anaconda和Miniconda也有相当的用户基础
  • PythonOCC也是工业界的刚需
  • Linux下的打包是必经之路

近来关注和点赞的朋友好多都是python新手,新手入门nuitka好处是没有pyinstaller的包袱,养成步步为营的科学思维;坏处是要一步步对照这来遇到报错有点慌,下面的文章详细讲解到python新手遇到报错如何处理的思路,希望能帮助到大家

来我们开始吧

  1. 下载MinGW64 8.1(MinGW编译器比MSVS编译器要快,并且不需要下载一堆20多G的安装文件到C盘),市面上有新的版本,目前为止还是这个版本最稳定
    https://sourceforge.net/projects/mingw-w64/files/
    版本不要弄错(最低的是8.1.0版本,32和64位的版本要注意)
    很多朋友反馈MinGW64下载失败,我整理压缩包后,放在百度网盘方便大家:https://pan.baidu.com/s/1CpdGxZj2hRsU_Z0ukp6kqg

提取码:8888

2. 解压后放在C盘目录下,查询gcc.exe是否有效

输入gcc.exe --version 检查是否有版本显示

3. 设置环境变量

4.安装 Nuitka

pip install nuitka

或者安装最新版本(根据使用经验发现新版本修复问题多,兼容性更好)

pip install -U "https://github.com/Nuitka/Nuitka/archive/develop.zip"

5.编译文件,以下是常用命令,仅限入门使用,仅限入门使用,仅限入门使用,高级部分看另一篇教程

--mingw64 #默认为已经安装的vs2017去编译,否则就按指定的比如mingw(官方建议)

--standalone 独立环境,这是必须的(否则拷给别人无法使用)

--windows-disable-console 没有CMD控制窗口

--output-dir=out 生成exe到out文件夹下面去

--show-progress 显示编译的进度,很直观

--show-memory 显示内存的占用

--include-qt-plugins=sensible,styles 打包后PyQt的样式就不会变了

--plugin-enable=qt-plugins 需要加载的PyQt插件

--plugin-enable=tk-inter 打包tkinter模块的刚需

--plugin-enable=numpy 打包numpy,pandas,matplotlib模块的刚需

--plugin-enable=torch 打包pytorch的刚需

--plugin-enable=tensorflow 打包tensorflow的刚需

--windows-icon-from-ico=你的.ico 软件的图标

--windows-company-name=Windows下软件公司信息

--windows-product-name=Windows下软件名称

--windows-file-version=Windows下软件的信息

--windows-product-version=Windows下软件的产品信息

--windows-file-description=Windows下软件的作用描述

--windows-uac-admin=Windows下用户可以使用管理员权限来安装

--linux-onefile-icon=Linux下的图标位置

--onefile 像pyinstaller一样打包成单个exe文件(2021年我会再出教程来解释)

--include-package=复制比如numpy,PyQt5 这些带文件夹的叫包或者轮子

--include-module=复制比如when.py 这些以.py结尾的叫模块

如下是一条完整的命令 编译的py文件为index.py(注意这是入门命令)

nuitka --mingw64 --standalone --show-progress --show-memory --plugin-enable=qt-plugins --include-qt-plugins=sensible,styles --output-dir=out index.py

看视频中的exe运行是不是很快,动手试试吧。可以放心用Python写代码了,也不用担心源码被别人看见,速度慢也不见得哦,现在可是C语言的代码了。著名的Blender就是用Nuitka编译的

这些文章都是我花费了好久的时间不断测试与探索,后期的一些bug总结文章是我们群的极客们总结的,顺手点个赞,与我们一起祝python从此走出反编译和速度慢的魔域!!!

编辑于 2022-01-19 21:08
「真诚赞赏,手留余香」
赞赏

2 人已赞赏

Python
Python 入门
Nuitka
赞同 1726​
327 条评论
分享
喜欢 ​ 收藏 ​ 申请转载
赞同 1726
分享
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

知乎转来的、、、Nuitka用法 的相关文章

随机推荐

  • Unity Notes之控制粒子系统的最大粒子数量

    Unity中的粒子系统使用起来还是比较方便的 不过在实际过程中遇到这样的一个问题 需要动态的来控制一个粒子系统组件所能产生的最大粒子数 看doc上说是有maxParticles来控制 但实际上却没有这个开放的参数 只能通过其它的方式来实现
  • STM32F103RBT6型号说明

    STM32系列专为要求高性能 低成本 低功耗的嵌入式应用设计的ARMCortex M0 M0 M3 M4和M7内核 主流产品 STM32F0 STM32F1 STM32F3 超低功耗产品 STM32L0 STM32L1 STM32L4 ST
  • 在Idea中使用控制台,显示文件

    在Idea中使用控制台 显示文件 前言 在IDEA创建项目时 IDEA会自动帮你生成一个存放 class文件的地方 就是在out目录下 而可执行的代码都在src目录下 可以在src目录下创建packet 包 可以把Java作业放在一个 Pr
  • Zookeeper学习笔记四之持久节点和临时节点

    持久节点和临时节点 znode节点可以是持久 persistent 节点 还可以是临时 ephemeral 节点 持久节点node 如 path 只能通过delete命令进行删除 而临时节点相反 当创建临时节点的客户端崩溃或者关闭了与Zoo
  • CAD导出DXF再导入PADS出现尺寸大小不一致的解决办法?

    如下错误 1 用CAD打开板框 删除板框多余部分 只留需要的部分 注意 从左边拖动鼠标选中 再删除 如果从右边拖动鼠标选中无法全选 2 设置原点 选中整个板框 输入命令m 点击最左下脚 输入坐标0 0设置为原点 此时板框完全不见了 双击滚轮
  • 制作Centos7自动安装镜像(三)

    文章总览 制作Centos7自动安装镜像 在这里说明一下 我们制作自动化安装镜像用的是linux的kickstart技术 这个技术的核心是制作一个ks cfg文件 将所有需要自动化安装的内容写成一个脚本 放置在镜像中 并在安装菜单中指定这个
  • 文件I/O和标准I/O的区别

    文件I O 文件I O是操作系统提供的操作文件的API 例如Linux中的open 和write 等 这些函数可以完成文件的操作 但是效率不一定很高 标准I O 标准I O是应用层提供的库函数 例如C语言提供的文件操作函数fopen fcl
  • Qt信息隐藏(Q_D/Q_Q)介绍

    目录 1 基本介绍与二进制兼容 2 二进制兼容的设计原则 3 常见c qt信息隐藏 4 Q Q Q D介绍 5 定制可编辑treewidget与如何访问基类的Private 6 总结 1 基本介绍与二进制兼容 作者虽然一直在linux做开发
  • Vue + Spring Boot 项目实战(分享)

    第一部分Vue Spring Boot 项目实战 一 项目简介Vue Spring Boot 项目实战 二 搭建 Vue js 项目Vue Spring Boot 项目实战 三 前后端结合测试 登录页面开发 Vue Spring Boot
  • Google earth engine学习笔记 2: 通过分析提取植被物候的代码学习gee 1

    Google earth engine学习笔记 2 通过分析提取植被物候的代码学习gee 1 通过一篇 根据 sentinel 2 影像计算植被指数并提取植被物候 的文章所附的代码学习gee 原作者的github 写这个东西是为了自己学习
  • python-scrapy框架(三)Pipeline文件的用法讲解

    Pipeline是一个独立的模块 用于处理从Spider中提取的Item对象 实现对数据的进一步处理 存储和清洗等操作 下面将详细介绍Scrapy框架中Pipeline的用法 1 创建Pipeline类 为了使用Pipeline类 我们需要
  • 物联网终端算法

    物联网终端算法是指在物联网终端设备上运行的各种算法 包括数据采集 数据预处理 数据传输 数据存储 数据处理 数据分析等算法 以下是物联网终端算法的一些具体应用 数据采集算法 用于采集各种传感器数据 包括温度 湿度 气压 光照 声音 震动等信
  • 华为OD机试 Java 实现【最优策略组合下的总的系统消耗资源数】【牛客练习题】,附详细解题思路

    目录 一 题目描述 二 输入描述 三 输出描述 四 解题思路 五 Java算法源码 六 效果展示 1 输入 2 输出 3 说明 4 思路 华为OD机试 2023B卷题库疯狂收录中 刷题点这里 一 题目描述 在通信系统中有一个常见的问题是对用
  • 0成本的售卖高考资料虚拟资源,这样的玩法顶得上一家大公司

    在这个快速发展 每天的信息成千上万的世界中 对于网络从业者来说 网络的信息就是金钱 以至于让活在当下的大多数年轻人 中年人 甚至在校学生 都会想在互联网这个金矿去分一块肉吃 但是每个人的时间都是平等的 一天24小时出去吃饭睡觉 甚至除去上班
  • 同时校验手机号和座机号

    文章目录 同时校验手机号和座机号 一 使用实例 同时校验手机号和座机号 filter方法是js中常用的方法 提示 以下是本篇文章正文内容 下面案例可供参考 一 使用实例 1 同时校验手机号和座机号 export function check
  • 机器学习-XGBoost

    一 XGBoost是什么 XGBoost是基于GBDT实现的 但GBDT算法只利用了一阶的导数信息 xgboost对损失函数做了二阶的泰勒展开 并在目标函数之外加入了正则项对整体求最优解 用以权衡目标函数的下降和模型的复杂程度 避免过拟合
  • 手机java开发环境,看完跪了

    01 分布式限流 Nginx ZooKeeper 1 1 分布式限流之Nginx 请解释一下什么是 Nginx 请列举 x Nginx 的一些特性 请列举 x Nginx 和 和 Apache 之间的不同点 请解释 x Nginx 如何处理
  • VUE实用技术点

    1 路由懒加载 能让你首次加载更快 路由懒加载可以让我们的包不需要一次把所有的页面的加载进来 只加载当前页面的路由组件就行 举个栗子 如果这样写 加载的时候会全部都加载进来 const router new VueRouter routes
  • ESDA in PySal (2) localjoincounts

    ESDA in PySal 2 localjoincounts 参考 https blog csdn net angel0929 article details 128433265 https blog csdn net allenlu20
  • 知乎转来的、、、Nuitka用法

    Python打包exe的王炸 Nuitka Python与模具 Python在制造领域的使用 关注 1 726 人 赞同了该文章