当前位置: 首页 > 后端技术 > Python

Python的打包神器——Nuitka!_0

时间:2023-03-26 15:14:30 Python

今天我们来了解一下打包神器Nuitka。pyinstaller和Nuitka使用心得1.1使用需求这次也是因为项目需要。找了半天,找到一个把python代码转成exe的程序。2个可以打包python项目的工具——pyintaller和nuitka。这两个工具可以同时满足项目的需求:隐藏源代码。这里的pyinstaller通过设置key对源码进行加密;而nuitka则是将python源码转为C++(这里获取的是二进制pyd文件,防止反编译),然后编译成可执行文件。易于移植。用户使用方便,无需安装python、第三方包等。1.2使用感受这两个工具使用后最大的感受就是:pyinstaller的体验很差!一个深度学习项目最终转换成的exe大小将近3G(pyinstaller将整个运行环境打包),是的,你没听错,一个EXE有3G!打包超慢,启动超慢。nuitka闻起来真香!同样的项目,生成的exe只有7M!打包超快(1分钟以内),启动超快。二、Nuitka的安装和使用2.1Nuitka的安装可以直接使用pip安装:pipinstallNuitka下载vs2019(MSVS)或者MinGW64,反正都是C++编译器,下载就行了。2.2使用过程对于第三方依赖较多的项目(如importtorch、tensorflow、cv2、numpy、pandas、geopy等),这里最好的打包方式是只将自己的代码转成C++,不管这些大型第三方包!下面是我的demo的一个目录结构(这里用的是pytq5框架写的界面):├─utils//源代码1文件夹├─src//源代码2文件夹├─logo.ico//demo图标└─demo.py//main文件使用如下命令(调试)直接生成exe文件:nuitka--standalone--show-memory--show-progress--nofollow-imports--plugin-enable=qt-plugins--follow-import-to=utils,src--output-dir=out--windows-icon-from-ico=./logo.icodemo.py这里简单介绍一下我上面的nuitka命令:--standalone:容易移植到其他机器上,不用再安装python--show-memory--show-progress:显示整个安装的进度--nofollow-imports:不编译代码中的所有导入,比如keras,numpy之类的。--plugin-enable=qt-plugins:我这里的接口使用pyqt5,这里nuitka有对应的插件。--follow-import-to=utils,src:两个指定文件夹,包含需要编译成C++代码的源代码,以.分隔。--output-dir=out:指定输出路径为out。--windows-icon-from-ico=./logo.ico:指定生成的exe的图标为logo.ico。这里是一个将图片转换成ico格式文件的网站(Bitbug)。--windows-disable-console:运行exe取消弹框。不放在这里是因为我们还需要调试,可能会出现问题等等。编译1分钟后,在你的目录下可以看到:├─utils//源代码1文件夹├─src//源代码2文件夹├─out//生成的exe文件夹├─demo.build└─demo.dist└─demo.exe//生成的exe文件├─logo.ico//demo图标└─demo.py//主文件当然你会发现实际运行exe的时候会报错:noModulenamedtorch、cv2、tensorflow等都是第三方包,没有转成C++。这里需要找到这些包(我的在software\python3.7\Lib\site-packages下)复制(比如numpy、cv2文件夹)到demo.dist路径下。至此,exe可以完美运行!以上就是本次分享的全部内容。觉得文章还不错的话,请关注公众号:Python编程学习圈,每日干货分享,发送“J”还能领取大量学习资料。或者去编程学习网了解更多编程技术知识。