Pythonで作成したスクリプトをWindows上で直接実行可能な形式(.exeファイル)に変換することは、多くの場面で便利です。
この記事では、「Nuitka」を使用してPythonスクリプトをEXE化する方法を詳しく解説します。
PyInstallerとの比較や、Nuitkaを使用する際のメリット・注意点も併せてご紹介します。
Pythonで作ったプログラムを周りの方にも配って作業を効率化したいんです。
でもPython環境がないPCを使っている人に.pyのプログラムを実行してもらうにはPythonをインストールしてもらわないといけないんでしょうか..
.pyファイルを.exeファイルに変換すればPythonの実行環境がないWindows端末でもプログラムを実行できますよ!
作ったexeファイルをダブルクリックするだけで実行できます。
簡単に実行したい場合は以下のリンクのPyInstallerも利用してみてください!
1. EXE化とは?
EXE化の目的
Python環境がないPCでも動かせる
EXE化することで、Pythonがインストールされていない環境でもプログラムを実行できます。
コードの保護
EXE化によってソースコードが直接見られにくくなり、セキュリティが向上します(完全ではありません)。
配布の簡便化
Pythonスクリプトや依存関係を一つのファイルにまとめられるため、配布やインストールが容易になります。
2. Nuitkaの使い方
Nuitkaとは?
Nuitkaは、Pythonスクリプトを「C言語コード」に変換し、コンパイルすることでEXEファイルを生成するツールです。
一般的なEXE化ツールである「PyInstaller」と比較して以下の利点があります:
実行速度の向上
PythonコードをCコードに変換してネイティブ実行速度に近づけます。
生成されるファイルサイズが小さい
不要な依存関係を含まないため、軽量なEXEファイルを生成します。
Nuitkaの基本的な使い方
Nuitkaはpipを使って簡単にインストールできます。以下のコマンドを実行してください。
python -m pip install nuitka
PythonスクリプトをEXE化する際には、以下のコマンドを実行します。
nuitka --onefile ファイル名.py
--onefile
オプション: このオプションを指定することで、すべての依存関係を含んだ単一のEXEファイルが生成されます。
プラグインの有効化
特定のライブラリ(例:NumpyやPandas)を使用している場合、プラグインを有効にする必要があります。
以下はNumpyを使用する場合の例です。
nuitka --onefile ファイル名.py --enable-plugin=numpy
Nuitka公式ドキュメントには、利用可能なプラグインの一覧が記載されているので、必要に応じて設定を追加してください。
3. PyInstallerとの比較
検証内容
同じPythonスクリプトをNuitkaとPyInstallerでEXE化し、ファイルサイズを比較しました。
使用したスクリプトは以下のようなプログラムです。
- テキストデータを音声データに変換するプログラム。
- 使用ライブラリ:PySimpleGUI(GUI構築用)とgTTS(Google Text-to-Speech)。
結果
ツール | 生成されたファイルサイズ |
---|---|
PyInstaller | 97.0MB |
Nuitka | 9.9MB |
差が生じる理由
PyInstaller
必要なライブラリやPythonインタープリタ全体を同梱するため、ファイルサイズが大きくなります。
Nuitka
PythonコードをCコードに変換し、必要最小限の依存関係だけを含む形式でコンパイルします。
そのため、軽量なEXEファイルが生成されます。
4. Nuitkaを使うべきケース
Nuitkaのメリット
軽量なファイルサイズ
配布時に便利で、ダウンロードやメール添付にも適しています。
実行速度の向上
特に計算量が多いプログラムの場合、ネイティブ実行速度に近づきます。
コード保護
Cコードに変換するため、Pythonのソースコードを直接読み取ることが困難になります。
適したケース
- ファイルサイズを重視する場合。
- 実行速度の最適化が求められる場合。
- Pythonがインストールされていない環境での実行が必要な場合。
5. 注意点
Nuitkaの制約
- 一部のライブラリに対応していない場合があります(公式プラグインで解決できるケースもあります)。
- コンパイル時間が長くなることがあります。
PyInstallerのメリット
- サポートされているライブラリが多い。
- ドキュメントが充実しており、トラブルシューティングが容易。
- 初心者でも比較的扱いやすい。
6. まとめ
NuitkaとPyInstallerにはそれぞれメリットがあります。
用途や要件に応じて使い分けるのがポイントです。
- Nuitkaは、軽量化や実行速度の向上を重視する場合に最適。
- PyInstallerは、広範なライブラリの対応や手軽な操作性が必要な場合に向いています。
Nuitkaを使用することで、Pythonスクリプトを効率よくEXE化し、配布の手間を大幅に軽減できます。ぜひ活用してみてください!
関連リンク
本ブログ「ゴマフリーダムのPython教室」のトップページへは以下へアクセス!
コメント