python写代码很爽,一直写一直爽!打包的时候就不一定爽鸟
Python唯二的难题运行速度和源代码反编译,一直是被众多语言所诟病。今天我们解决这个问题,享受C++的速度,免于反编译的担忧,更多打包技巧与nuitka教程请关注,以下是已经打包成功解决的python模块
Nuitka-Python打包exezhuanlan.zhihu.com
- Pytorch
- Tensorflow
- Keras
- Pandas
- Scipy
- Numpy
- PyqtGraph
- Pywin32
- Tkinter
- Matplotlib
- PyQt5-QtWebEngine
- PySimpleGUI
- Pyside2
- opencv-python
废话不多说,直接上视频,打包出现Bug的请私信截图,公众号:
Python与模具,添加后有QQ群,将问题截图在群内(目前暂不接受新加入,最近加入的群友不看文章就瞎提问,解决nuitka问题后也不点赞;前前后后免费给群友提供两三百多次的打包debug服务,有点心寒,想推广Nuitka就这么难),有问题请在Github官网提issues。新的Nuitka文章还是会继续总结和更新的,目前正在研究Pyinstaller的源码,希望能借鉴思路来解决nuitka中复杂的dll打包问题,如有同行者请私信我
Python打包exe Nuitkahttps://www.zhihu.com/video/1234960229151850496
更新高阶版,95%的打包问题在这里可以解决
Python与模具:Python打包exe(32/64位)-Nuitka再下一城zhuanlan.zhihu.com
遇到常见的bug,解决方案也给你留下(两百群友们的集体智慧)
Python与模具:Nuitka常见问题解决集锦-独孤九剑之破Bug式zhuanlan.zhihu.com
顺便去github查看其它开发者提的问题,少走弯路
Nuitka/Nuitkagithub.com
Stack Overflow上面的提问也很多,不失为一个参考,我经常在上面查找
Posts containing 'nuitka'stackoverflow.com
网上可用可操作的例子的不多,实战的更不多,这篇文章将翔实的介绍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文件夹命名
Python与模具:Nuitka之乾坤大挪移-让天下的Python都可以打包zhuanlan.zhihu.com
- 其他电脑在使用编译完成后的exe文件,VC运行库至少升级到2015
- 编译完成后的文件夹名称不能有或修改成中文
- 打包单个exe的工具
Python与模具:Pyinstaller下一代接班人Nuitka的必杀技-打包成单个exe技巧谈zhuanlan.zhihu.com
- 打包单个pyd,加密源码或者密码和IP,也改善打包exe的失败概率
Python与模具:一行代码的Python加密和&加速-nuitka打包pyd技巧谈zhuanlan.zhihu.com
Python与模具:Nuitka打包Python-MacOS之众望所归zhuanlan.zhihu.com
- Anaconda和Miniconda也有相当的用户基础
Python与模具:Nuitka打包Python-Conda环境下之大威天龙zhuanlan.zhihu.com
来我们开始吧
- 下载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插件
--windows-icon=你的.ico 软件的图标
如下是一条完整的命令 编译的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编译的
这些文章都是我花费了好久的时间不断测试与探索,后期的一些bug总结文章是我们群的极客们总结的,顺手点个赞,与我们一起祝python从此走出反编译和速度慢的魔域!!!