Python程序使用Nuitka打包exe
介绍
Nuitka和pyinstaller
- 隐藏源码。pyinstaller是通过设置key来对源码进行加密的;而nuitka则是将python源码转成C++(这里得到的是二进制的pyd文件,防止了反编译),然后再编译成可执行文件。
- 方便移植。用户使用方便,不用再安装什么python啊,第三方包之类的。
环境
Linux Openeuler,和Centos环境基本一致
安装
pip install Nuitka
下面两步的安装自行选择包管理器,比如:ubuntu系统用apt,Openeuler用dnf,Centos用yum
# Linux环境下使用standardalone模式打包会出现`FATAL: Error, standalone mode on Linux requires 'patchelf' to be installed. Use 'apt/dnf/yum install patchelf' first.`,按照提示安装即可
yum install -y patchelf
# 如果不安装下面这个,编译C时会报错FATAL: Error, no 'Python.h' development headers can be found at '['/usr/include/python3.9', '/usr/develop/headers/python3.9']', dependency not satisfied!
yum install python3-devel
使用
linux环境下如果出现nuitka: command not found
,则需要使用nuitka3
指令去执行
--standalone
:方便移植到其他机器,不用再安装python--show-memory --show-progress
:展示整个安装的进度过程--nofollow-imports
:不编译代码中所有的import,比如keras,numpy之类的。--plugin-enable=qt-plugins
:加载nuitka插件。--follow-import-to=utils,src
:需要编译成C++代码的指定的2个包含源码的文件夹,这里用,
来进行分隔。--output-dir=out
:指定输出的结果路径为out。--windows-icon-from-ico=./logo.ico
:指定生成的exe的图标为logo.ico这个图标--windows-disable-console
:运行exe取消弹框
eg.
# eg.
nuitka3 --standalone --show-memory --show-progress --nofollow-imports --plugin-enable=qt-plugins --follow-import-to=utils,src --output-dir=out --windows-icon-from-ico=./logo.ico demo.py
# 正常的单文件打包用这个即可
nuitka3 --standalone --show-memory --show-progress --output-dir=out demo.py
参考资料:https://mp.weixin.qq.com/s?__biz=MzA4MjEyNTA5Mw==&mid=2652596403&idx=1&sn=4f80c0bc191c732f77eda7eb5ce13b43&chksm=846540f9b312c9efd505013aa3a53441e3d75b4be4995a778ba864fef0766a2453d761f93016&scene=27
分别是哔哩哔哩序号35,小米运动序号2,米友社序号13,这个是同一个账号下运行的任务