引子
相较于简单易上手同样也易报毒易破解的Pyinstaller, Nuitka的功能更侧重于加速, 打包功能只是附带的福利。
先把搜集的两篇参考文列上来, 安装运行之类的这里不废话了:
nuitka使用参考, Python打包
当然更全面的还是直接看参数帮助:nuitka -h >read_nuitka.txt
总结一些常用参数
--full-compat
适配官方的嵌入式python-embed环境,强烈推荐
--plugin-enable=upx
启用upx压缩
--follow-imports
在嵌入式环境中等于把site-packages
打包进exe文件
--nofollow-imports
对应的就是不打包任何依赖包进exe, 编译速度快, 也可以减少些问题
--windows-onefile-tempdir-spec=%TEMP%\someDir
配合单一文件模式--onefile
使用,
指定临时解压路径
--file-reference-choice=runtime
需要读取程序运行路径下的文件时适用
--include-package=requests
等于单独把把site-packages
中的requests打包进exe文件,
可以解决系列报错requests - urllib3 - six - No module named http.client
用例&经验分享
功能单一的程序打包:
nuitka --mingw64 --follow-imports --full-compat --include-package=requests --plugin-enable=upx --windows-icon-from-ico=SOME.ico --output-dir=out SOME.py
或单文件方式:
nuitka --mingw64 --onefile --full-compat --include-package=requests --plugin-enable=upx --windows-icon-from-ico=SOME.ico --output-dir=out SOME.py
之所以加上--include-package=requests
, 在我的用例中不加运行时会报错No module named xxx
多个功能exe分别编译,放到一个包中:
nuitka --mingw64 --nofollow-imports --full-compat --plugin-enable=upx --windows-icon-from-ico=SOME.ico --output-dir=out SOME.py
这样打包的文件体积几乎算是最小的,配合嵌入式python-embed环境运行, 可以替代--standalone
参数, 达到同样的Portable(便携)效果。
编译模块为pyd:
nuitka --mingw64 --module --show-progress --full-compat --plugin-enable=upx --output-dir=out SOME.py