查看原文
其他

Python打包exe的王炸-Nuitka

alitrack 2022-10-01

编者荐语:

几天前,就是这篇文章,让我开始重新研究Nuitka,并整理发表了 MacOS下Nuikta编译PyQt5程序碰到的坑,http://t.cn/A6wTiKZ0

以下文章来源于Python与模具 ,作者六角尺

python写代码很爽,一直写一直爽!打包的时候就不一定爽鸟


废话不多说,直接上视频

网上可用可操作的例子的不多,实战的更不多,这篇文章将翔实的介绍Nuitka打包python文件,祝各位早日用上Nuitka,不再被其他语言给鄙视


Python唯二的难题运行速度和源代码反编译,一直是被众多语言所诟病


Nuitka项目就是解决这两个难题而生的,看看Nuitka的那个糟老头子作者怎么说的(Kay Hayen大仙是真的糟老头子,各位想一睹仙容的,去Youtube上去看看历次Pycon DE分享)


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


  • Numpy等类似c程式和pyd的调用还是忽略编译好,不要一咕噜全梭哈啦,编译后反而更慢。重点事项是要小本本记上,别说本豪猪没有提醒呀

  • 编译的电脑选择台式机,运行的时候CPU运行是100%,风扇会猛响啊,电脑烧掉了划不来

  • 其他电脑在使用编译完成后的exe文件,VC运行库至少升级到2015

  • 编译完成后的文件夹名称不能有或修改成中文


来我们开始吧

  1. 下载MinGW64 8.1(MinGW编译器比MSVS编译器要快,并且不需要下载一堆20多G的安装文件到C盘)

    https://sourceforge.net/projects/mingw-w64/files/

    版本不要弄错(最低的是8.1.0版本,32和64位的版本要注意)


   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控制窗口

--recurse-all  所有的资源文件 这个也选上

-recurse-not-to=numpy,jinja2 不编译的模块,防止速度会更慢

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

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

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

--plugin-enable=pylint-warnings  报警信息

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


如下是一条完整的命令 编译的py文件为index.py

nuitka --mingw64 --windows-disable-console --standalone --show-progress --show-memory --plugin-enable=qt-plugins --plugin-enable=pylint-warnings --recurse-all --recurse-not-to=numpy,jinja2 --output-dir=out index.py


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

其他优化的小技巧以后再写。

如果有疑问的请留言到后台,我会尽量回复你的问题。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存