用 python 写的小工具,如果要给别人用,打包成单一 exe 会非常方便,一般来说,我们都用 PyInstaller。
但是,我发现火绒对 PyInstaller 很不友好,打包好的文件,在第一次运行释放的过程中,火绒会开始疯狂扫描,这样,首次打开的速度会非常慢。
其次,PyInstaller 几乎没有对源码进行保护,只是简单打包。
这次我发现了 Nuitka,它也是打包工具,不同的是,Nuitka 将 Python 代码编译成 C/C++ 后进行编译,相比于 PyInstaller,执行效率略高,体积略小,且防源码泄露。
演示
这里演示打包一个 tkinter 的 GUI 程序到单一的 exe。
首先创建一个 python 虚拟环境,装好 nuitka。
python -m venv .venv
.venv\Scripts\activate
pip install nuitka
新建 main.py
import tkinter as tk
def say_hello():
label.config(text="Hello, Tkinter!")
# 创建主窗口
root = tk.Tk()
root.title("Simple Tkinter Example")
# 创建标签
label = tk.Label(root, text="Welcome to Tkinter!", font=("Helvetica", 16))
label.pack(pady=20)
# 创建按钮
button = tk.Button(root, text="Say Hello", command=say_hello)
button.pack()
# 运行主事件循环
root.mainloop()
开始构建,如果机器上有 Visual Studio,就用它。
没有将会自动下载 MingGW64 来编译。
可以使用 --mingw64 来强制使用 mingw64
python -m nuitka --standalone --show-progress --onefile --windows-disable-console --enable-plugin=tk-inter --remove-output --mingw64 main.py
打包结果 main.exe 约 5m 大小。
正文完