一、Nuitka介绍
Nuitka是一个Python的替代编译器。它可以无缝地替代和扩展Python的解释和编译工作。截止2021年8月,支持Python2 (2.6, 2.7) 和 Python3 (3.3 - 3.9)版本 [4] 。它可以执行编译的代码,并能用很兼容的方式将目标代码一起编译。
开发者可以自由的使用所有的Python模块库和其他全部的第三方扩展库。Nuitka可以将Python代码编译成C级别的程序,并像CPython调用libpython一样去使用libpython库去执行编译后的程序。Nuitka的这些的优化工作旨在是为了能够避免Python执行过程中的在某个环节产生的不必要的开销。并旨在能够是消除一些不兼容性,虽然这是一种改进了的模式,但也不是每个标准Python的bug都能模拟,例如,提供更完整的错误信息。
二、个人对Nuitka的认知
我写python很多了年了,写python程序过程是很爽,但是打包生成exe的应用是真的非常困难。好用的pyinstaller打包成功率是非常的高,移植性也是非常强,在win7系统打包的exe程序,几乎可以在所有的win10系统运行。但是任何事物都有两面性,打包是非常的好用,必然也是便随着问题和缺陷。第一那就是用pyinstaller打包的程序会非常庞大(以目前计算机的配置 其实还好)。第二是用pyinstaller打包的程序运行起来不会非常流畅,启动非常慢,这个体验是非常差的,过程种的奔溃其实也不多见。第三就是不安全,pyinstaller打包的exe是非常容易被反编译的(我觉得反编译人的也是够无聊的)为了解决如上所说的问题,Nuitka便应运而生。Nuitka是将python代码编译成C级别的代码,从而提高运行速度,因为代码已经编译程C代码级别的程序,所以反编译的难度也大大增大。根据网友介绍,用Nuitka打包的程序可以做到秒开,软件大小也减小了非常多。我对这几点也是保持怀疑的态度。毕竟Hello world 和其他复杂的程序打包结果肯定也是不一样的。
三、Nuitka打包体验
我Nuitka用的比较少,只是因为他的打包过程相对复杂,打包所用到的方法、方式非常多,还是命令行,要打一大串命令才行,不好操作也不好记。但是打包出来的程序把,打开速度确实是快,没话说。
为了方便我自己使用他来打包python程序,我就花时间做了一个EasyNuitka,一个带有图形界面的小工具,除了方便打包之外其实也没啥的。他目前还不具备自动修复一些代码问题,也无法提高打包的成功率,简而言之他现在就是方便大家打包而已,省去敲一大串命令的时间。
四、EasyNuitka介绍
EasyNuitka是一个带图形界面的工具,如下图所示,大家根据英文就能理解他的意思,操作过程也很简单。
1. 选择要打包的主文件(Main File)
2. 选择打包完成后exe文件的生成路径,默认为当前文件夹(Output Path)
3. 选择打包方式,这个需要看Nuitka的官方介绍
4. 选择打包的插件(后面我会详细介绍)
5. 打包参数的设定(后面我会详细介绍))
6. 最后一步开始打包(Start package)(后面我会详细介绍))
#安装方法
pip install EasyNuitka
#运行
python -m EasyNuitka
这个小工具我目前已经完成了90%,对于一般的python程序打包都没问题,我也将源代码放到了
Github上面,欢迎大家下载使用,也欢迎大家和我一起完善他,让天下没有难打包的python程序。
EasyNuitka Github 链接:https://github.com/qunat/EasyNuitka.git
以下视频是我对一款基于python语言开发的三维软件打包后启动速度的展示,只能说没用最快只有更快
pythonoccc