Python 打包工具对比,Nuitka vs Pyinstaller

因为工作需要,需要把一个Python脚本打包封装后在公司内推广,原先以为代码写完,功能正常就完事了,没想到Python跨平台打包是一件很麻烦的事情。

公司内部同事有用Linux,有用Mac OS的,还有大量Windows用户,所以需要Python跨平台打包。

最初调研的时候,确定了几个被选工具,py2exe,PyinstallerCx_freeze.后来又在google上搜索到了Nuitka也可以完成python打包的任务。

Pyinstaller和Nuitka都号称跨平台,但其实顶多只能算是工具本身跨平台,实际体验中不仅打包产生的文件不能跨平台,能否成功打包本身也不确定。

本篇博文主要总结下在调研使用以上工具中遇到的坑和解决方法。

先放结论,如果对安全性和速度要求不是那么高,推荐使用Pyinstaller,而不是Nuitka,具体原因会在下文给出。

常见Python打包工具汇总比较

上面的网址给出了常见打包工具的简单比较,从参数上来说真正可以做到“跨平台”的只有bbFreeze,cx_Freeze,Pyinstaller这几款。以及可以算作编译器的Nuitka。

Nuitka

Nuitka直接将python编译成C++代码 ,再编译C++代码产生可执行文件,完全不存在反向解析的问题,非常安全,而且由于可执行文件由C++编译而来,运行速度也会获得提升。

但是在实际体验Nuitka的过程中发现了很多问题.

使用Nuitka的具体指令如下

nuitka --standalone --nofreeze-stdlib gclt.py --output<
### 使用NuitkaPyInstaller一起打包Python应用程序 当考虑使用NuitkaPyInstaller来打包Python应用时,主要目标是利用两者的优势以获得更优化的应用程序包。Nuitka是一个Python到C++的编译器,能够将Python源码转换成高效的机器代码;而PyInstaller则专注于创建独立可执行文件。 对于希望结合二者特性的开发者来说,通常先通过Nuitka编译部分关键模块或整个项目为二进制形式[^1]。这一步骤可以显著提升性能并保护知识产权。接着,在已经预处理过的代码基础上运行PyInstaller,从而构建最终分发版本。 具体操作流程如下: #### 准备工作 确保安装了最新版的Nuitka以及PyInstaller工具库: ```bash pip install nuitka pyinstaller ``` #### 编译阶段 采用Nuitka对选定脚本进行静态编译,生成对应的`.exe`或其他平台特定格式的目标文件。这里假设有一个名为`main.py`的应用入口点。 ```bash nuitka --standalone main.py ``` 此命令会尝试把尽可能多的内容转化为本地代码,并放置在一个单独目录内。 #### 打包过程 随后借助PyInstaller进一步封装上述由Nuitka产生的成果物。需要注意的是,此时应指定正确的输入路径指向之前Nuitka输出的结果位置。 ```bash pyinstaller --onefile ./dist/main.dist/main.exe ``` 此处假定Nuitka默认情况下会在当前项目的根目录下建立一个叫做`dist`的新文件夹用于存放其产物,其中包含了被编译后的主程序副本以及其他依赖资源。 这种组合方式不仅有助于提高效率,还能增强安全性,因为经过Nuitka转化的部分难以反向工程解析原始逻辑结构[^2]。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值