目次
はじめに
PythonスクリプトをEXEファイルに変換したい場合、NuitkaとPyInstallerという2つの主要なツールがあります。本記事では、特にNuitkaの使い方に焦点を当て、実践的なコード例と共に解説していきます。
Nuitkaの基本的な使い方
1. インストール
pip install nuitka
2. 基本的な変換コマンド
最もシンプルな使用例から始めましょう。以下のようなPythonスクリプト(sample.py)があるとします:
# sample.py
def greet(name):
return f"こんにちは、{name}さん!"
if __name__ == "__main__":
print(greet("太郎"))
このスクリプトをEXE化する基本コマンド:
python -m nuitka sample.py
3. よく使用する実行コマンド(推奨)
nuitka --windows-disable-console --standalone --onefile sample.py
各オプションの説明:
--windows-disable-console
: コンソールウィンドウを非表示にする--standalone
: 必要な依存関係を全て含める--onefile
: 単一のEXEファイルにまとめる
Nuitkaの主要なオプション
- 基本オプション
--follow-imports # 全ての依存関係を含める
--include-module=モジュール名 # 特定のモジュールを含める
--output-dir=出力先 # 出力ディレクトリを指定
- 最適化オプション
--lto=yes # リンク時最適化を有効化
--jobs=8 # 並列ビルドのスレッド数指定
NuitkaとPyInstallerの比較
実行速度
- Nuitka: Cコードにコンパイルするため、高速
- PyInstaller: バイトコードを実行するため、若干遅い
ファイルサイズ
- Nuitka: 最適化により比較的小さい
- PyInstaller: 一般的にNuitkaより大きい
ビルド時間
- Nuitka: コンパイルが必要なため長い
- PyInstaller: 比較的短い
セキュリティ
- Nuitka: ソースコードが完全にコンパイルされる
- PyInstaller: バイトコードが残るため、逆コンパイルの可能性あり
Nuitkaを使うべき理由
- 高速な実行速度
- Cコードへのコンパイルによる最適化
- ネイティブコードとしての実行
- セキュリティ
- ソースコードの保護が強力
- 逆コンパイルが困難
- 柔軟な設定
- 詳細なビルド設定が可能
- 多様なプラットフォームサポート
よくあるトラブルシューティング
- モジュールが見つからないエラー
--include-module=問題のモジュール名
- DLLが見つからない場合
--standalone --include-dll=必要なDLL名
まとめ
Nuitkaは、特に以下の場合に最適な選択肢となります:
- 実行速度が重要な場合
- ソースコードの保護が必要な場合
- カスタマイズ可能な変換設定が必要な場合
最終的な推奨コマンドは以下となります:
nuitka --windows-disable-console --standalone --onefile sample.py
この設定で、多くの場面に対応できる汎用的に使えるEXEファイルを生成できます。