Nuitka は Python コンパイラであり、.py
ファイルを本物のバイナリプログラム(実行可能ファイルまたは動的ライブラリ)に変換できます。従来の Python プログラムはインタプリタで実行されます(例: python3 script.py
)。しかし、Nuitka を使用することで、Python スクリプトを独立した .exe
(Windows)または ELF ファイル(Linux)にコンパイルでき、実行速度が向上し、ソースコードがより安全になります(簡単に逆コンパイルされにくい)。
プロジェクトのアドレス:Nuitka GitHub
特徴#
Nuitka には以下の特徴があります:
- 性能向上:Python を C に変換し、さらに機械語にコンパイルすることで、実行速度がインタプリタ実行よりも速くなります(特に計算集約型コードに対して)。
- クロスプラットフォーム:Windows、Linux、macOS をサポート。
- 互換性が高い:ほぼすべての Python 構文、ライブラリ(サードパーティライブラリを含む)をサポート。
- コード保護:バイナリにコンパイルされた後は、より安全で、
.py
スクリプトのようにソースコードを簡単に見ることができません。 - 単一ファイルの実行可能プログラムに直接パッケージ化可能:ユーザーは Python 環境をインストールして設定する必要がありません。
一言でまとめると:より速く、より安全で、「ワンクリックで実行可能ファイルを生成」できます。
インストール#
インストールは非常に簡単で、1 行のコマンドで済みます:
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 は非常に試す価値があります。