Nuitka 是一个 Python 编译器,它能把 .py
文件变成真正的二进制程序(可执行文件或动态库)。传统的 Python 程序依赖解释器运行(例如: python3 script.py
),而通过 Nuitka,我们可以将 Python 脚本编译成一个独立的 .exe
(Windows)或 ELF 文件(Linux),并且运行速度更快,源码更安全(更不容易被随便反编译)。
项目地址:Nuitka GitHub
特点#
Nuitka 具有以下特点:
- 性能提升:将 Python 转换为 C,再编译成机器码,运行速度比解释执行快一些(尤其针对计算密集型代码)。
- 跨平台:支持 Windows、Linux、macOS。
- 兼容性好:几乎支持所有 Python 语法、库(包括第三方库)。
- 代码保护:编译成二进制后,更加安全,不像
.py
脚本那样容易查看源码。 - 可直接打包成单文件可执行程序:用户无需安装配置 Python 环境。
一句话总结:更快、更安全,还能 “一键生成可执行文件”。
安装#
安装非常简单,只需一行命令:
pip3 install nuitka
如果您在国内使用 pip 较慢,可以加上清华源:
pip install nuitka -i https://pypi.tuna.tsinghua.edu.cn/simple
注意:Nuitka 依赖系统的 C 编译器,因此需要提前配置好环境:
- Windows:安装 [Visual Studio Build Tools] 或者 MinGW。
- Linux / macOS:一般自带 gcc 或 clang,可以直接使用。
例子#
我们先编写一个简单的例子:
def say_hello(name):
print(f"你好, {name}!欢迎使用 Nuitka!")
if __name__ == "__main__":
say_hello("Pythoner")
现在我们用 Nuitka 编译:
nuitka --standalone --onefile hello.py
其中,standalone
表示打包成独立可运行的目录,不依赖外部 Python 环境;onefile
表示生成单独一个可执行文件。编译完成后,您会得到一个 hello.exe
(Windows)或 hello
(Linux、macOS)。这样就可以直接使用了。
接下来编写一个实际的例子,比如斐波那契数列:
def fib(n):
if n <= 2:
return 1
return fib(n-1) + fib(n-2)
if __name__ == "__main__":
print(fib(35))
如果直接用 Python 解释器运行,可能要等好几秒;但如果用 Nuitka 编译后再运行,速度会有明显提升。算力密集型代码非常适合利用 Nuitka 进行编译后运行。
总结#
Nuitka 相当于把 Python 变成 “真・C 程序” 的神器。适合用来加速、保护代码、打包分发。如果您经常需要将 Python 程序交付给他人,又担心他们没有 Python 环境或怕源码泄露,那么 Nuitka 非常值得一试。