Nuitka——Python打包工具

186次阅读
没有评论

用 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 大小。

正文完
 0
评论(没有评论)