Python程序使用Nuitka打包exe

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
评论区
头像
文章目录