因为工作需要,需要把一个Python脚本打包封装后在公司内推广,原先以为代码写完,功能正常就完事了,没想到Python跨平台打包是一件很麻烦的事情。
公司内部同事有用Linux,有用Mac OS的,还有大量Windows用户,所以需要Python跨平台打包。
最初调研的时候,确定了几个被选工具,py2exe,Pyinstaller,Cx_freeze.后来又在google上搜索到了Nuitka也可以完成python打包的任务。
Pyinstaller和Nuitka都号称跨平台,但其实顶多只能算是工具本身跨平台,实际体验中不仅打包产生的文件不能跨平台,能否成功打包本身也不确定。
本篇博文主要总结下在调研使用以上工具中遇到的坑和解决方法。
先放结论,如果对安全性和速度要求不是那么高,推荐使用Pyinstaller,而不是Nuitka,具体原因会在下文给出。
上面的网址给出了常见打包工具的简单比较,从参数上来说真正可以做到“跨平台”的只有bbFreeze,cx_Freeze,Pyinstaller这几款。以及可以算作编译器的Nuitka。
Nuitka
Nuitka直接将python编译成C++代码 ,再编译C++代码产生可执行文件,完全不存在反向解析的问题,非常安全,而且由于可执行文件由C++编译而来,运行速度也会获得提升。
但是在实际体验Nuitka的过程中发现了很多问题.
使用Nuitka的具体指令如下
nuitka --standalone --nofreeze-stdlib gclt.py --output<