Nuitka is a Python compiler that can turn .py
files into real binary programs (executable files or dynamic libraries). Traditional Python programs rely on an interpreter to run (for example: python3 script.py
), but with Nuitka, we can compile Python scripts into a standalone .exe
(Windows) or ELF file (Linux), which runs faster and is more secure (less prone to casual reverse engineering).
Project address: Nuitka GitHub
Features#
Nuitka has the following features:
- Performance Improvement: Converts Python to C, then compiles it to machine code, running faster than interpreted execution (especially for compute-intensive code).
- Cross-Platform: Supports Windows, Linux, macOS.
- Good Compatibility: Almost supports all Python syntax and libraries (including third-party libraries).
- Code Protection: More secure after being compiled into binary, unlike
.py
scripts which are easier to view the source code. - Can be directly packaged into a single executable file: Users do not need to install and configure a Python environment.
In summary: Faster, safer, and can "generate executable files with one click".
Installation#
Installation is very simple, just one command:
pip3 install nuitka
If you find pip slow in China, you can add the Tsinghua source:
pip install nuitka -i https://pypi.tuna.tsinghua.edu.cn/simple
Note: Nuitka depends on the system's C compiler, so you need to configure the environment in advance:
- Windows: Install [Visual Studio Build Tools] or MinGW.
- Linux / macOS: Generally comes with gcc or clang, which can be used directly.
Example#
Let's first write a simple example:
def say_hello(name):
print(f"Hello, {name}! Welcome to using Nuitka!")
if __name__ == "__main__":
say_hello("Pythoner")
Now we compile with Nuitka:
nuitka --standalone --onefile hello.py
Here, standalone
means packaging into a standalone runnable directory, without relying on an external Python environment; onefile
means generating a single executable file. After compilation, you will get a hello.exe
(Windows) or hello
(Linux, macOS). You can use it directly.
Next, let's write a practical example, such as the Fibonacci sequence:
def fib(n):
if n <= 2:
return 1
return fib(n-1) + fib(n-2)
if __name__ == "__main__":
print(fib(35))
If you run it directly with the Python interpreter, it may take several seconds; but if you compile it with Nuitka and then run it, the speed will be significantly improved. Compute-intensive code is very suitable for compilation and execution with Nuitka.
Summary#
Nuitka is like a magical tool that turns Python into "real C programs". It is suitable for speeding up, protecting code, and packaging for distribution. If you often need to deliver Python programs to others and are worried that they do not have a Python environment or are afraid of source code leakage, then Nuitka is definitely worth a try.