当前位置:   article > 正文

Python打包exe等高效工具Nuitka_nuitka打包后性能提升多少

nuitka打包后性能提升多少

Python打包,Nuitka,高效

Python打包exe等高效工具Nuitka

前言

Python常用的打包工具有 Nuitka、Pyinstaller、py2exe、Cx_freeze,最火的莫过于Pyinstaller和Nuitka。比较之下,Nuitka更好,速度更快。因为:
nuitka的作用是将python程序转换成C语言的可执行elf文件。这样在运行时就可以享受到C语言处理过程中的优化,提高速度。经测试,Nuitka打包后的exe比Pyinstaller打包后的exe运行速度提升30%。

1. 安装

Nuitka的安装直接一条命令即可

pip install nuitka
  • 1

但为了使环境依赖简洁,最好创建虚拟环境

conda create -n EXE python=3.7
conda activate EXE
pip install nuitka
  • 1
  • 2
  • 3

输入

nuitka3 --version
或
python -m nuitka --version
  • 1
  • 2
  • 3

可以查看其版本号,笔者nuitka安装的是1.2版本,所用的环境是Ubuntu 20.04,Python3.7

2. 准备代码

main.py

def say(info):
    return "Say " + info

def main():
    print(say("Hello World"))

if __name__ == "__main__":
    main()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

3. 打包

1)Linux

# 打包成文件夹
nuitka3 --standalone --remove-output main.py  # --standalone参数: --standalone 独立环境,这是必须的(否则拷给别人无法使用)
#--remove-output参数:删除临时缓存
# 或 python -m nuitka --standalone --remove-output main.py  (下同)

# 打包成单文件
nuitka3 --standalone --remove-output --onefile main.py  # --onefile 参数: 生成一个打包文件

# 打包成exe
nuitka3 --standalone --remove-output --onefile -o main.exe main.py # -o 指定输出
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

Linux下打包后生成 main.binmain.exe二进制文件,直接

./main.bin
./main.exe
  • 1
  • 2

即可运行!

2)Win

# 打包成文件夹
nuitka --standalone --remove-output --mingw64 main.py
# 打包成单文件
nuitka3 --standalone --remove-output --mingw64 --onefile main.py
  • 1
  • 2
  • 3
  • 4

另外,安装 zstandard 后再打包可以让打包出来的文件更小:

pip install zstandard
  • 1

安装后,上面打包命令不变!

3)报错解决

由于是新建的python虚拟环境,打包时候可能会出现缺失依赖包等的报错和警告。
(1)报错

Nuitka-Options:INFO: Used command line options: --standalone --remove-output --onefile main.py
  • 1

在这里插入图片描述如果是Ubuntu,则直接

apt install patchelf
  • 1

即可!

(2)报警告

Nuitka:WARNING: Using very slow fallback for ordered sets, please install 'orderedset' PyPI package for best Python
Nuitka:WARNING: compile time performance.
  • 1
  • 2

在这里插入图片描述则直接

pip install orderedset
  • 1

即可!

4)其他打包参数

win:

--mingw64 #默认为已经安装的vs2017去编译,否则就按指定的比如mingw(官方建议)

--standalone 独立环境,这是必须的(否则拷给别人无法使用)

--windows-disable-console 没有CMD控制窗口

--output-dir=out 生成exe到out文件夹下面去

--show-progress 显示编译的进度,很直观

--show-memory 显示内存的占用

--include-qt-plugins=sensible,styles 打包后PyQt的样式就不会变了
--plugin-enable=qt-plugins 需要加载的PyQt插件

--plugin-enable=tk-inter 打包tkinter模块的刚需

--plugin-enable=numpy 打包numpy,pandas,matplotlib模块的刚需

--plugin-enable=torch 打包pytorch的刚需

--plugin-enable=tensorflow 打包tensorflow的刚需

--windows-icon-from-ico=你的.ico 软件的图标

--windows-company-name=Windows下软件公司信息

--windows-product-name=Windows下软件名称

--windows-file-version=Windows下软件的信息

--windows-product-version=Windows下软件的产品信息

--windows-file-description=Windows下软件的作用描述

--windows-uac-admin=Windows下用户可以使用管理员权限来安装

--linux-onefile-icon=Linux下的图标位置

--onefile 像pyinstaller一样打包成单个exe文件

--include-package=复制比如numpy,PyQt5 这些带文件夹的叫包或者轮子

--include-module=复制比如when.py 这些以.py结尾的叫模块
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/503066
推荐阅读
相关标签
  

闽ICP备14008679号