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 非常值得一試。