赞
踩
Python常用的打包工具有 Nuitka、Pyinstaller、py2exe、Cx_freeze,最火的莫过于Pyinstaller和Nuitka。比较之下,Nuitka更好,速度更快。因为:
nuitka的作用是将python程序转换成C语言的可执行elf文件。这样在运行时就可以享受到C语言处理过程中的优化,提高速度。经测试,Nuitka打包后的exe比Pyinstaller打包后的exe运行速度提升30%。
Nuitka的安装直接一条命令即可
pip install nuitka
但为了使环境依赖简洁,最好创建虚拟环境
conda create -n EXE python=3.7
conda activate EXE
pip install nuitka
输入
nuitka3 --version
或
python -m nuitka --version
可以查看其版本号,笔者nuitka安装的是1.2版本,所用的环境是Ubuntu 20.04,Python3.7
main.py
def say(info):
return "Say " + info
def main():
print(say("Hello World"))
if __name__ == "__main__":
main()
# 打包成文件夹
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 指定输出
Linux下打包后生成 main.bin
或 main.exe
二进制文件,直接
./main.bin
./main.exe
即可运行!
# 打包成文件夹
nuitka --standalone --remove-output --mingw64 main.py
# 打包成单文件
nuitka3 --standalone --remove-output --mingw64 --onefile main.py
另外,安装 zstandard
后再打包可以让打包出来的文件更小:
pip install zstandard
安装后,上面打包命令不变!
由于是新建的python虚拟环境,打包时候可能会出现缺失依赖包等的报错和警告。
(1)报错
Nuitka-Options:INFO: Used command line options: --standalone --remove-output --onefile main.py
如果是Ubuntu,则直接
apt install patchelf
即可!
(2)报警告
Nuitka:WARNING: Using very slow fallback for ordered sets, please install 'orderedset' PyPI package for best Python
Nuitka:WARNING: compile time performance.
则直接
pip install orderedset
即可!
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结尾的叫模块
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。