[Tech#7]Pythonスクリプトのexe化

この記事では、開発したPythonスクリプトを別のPCに配布する方法を記述します。

想定する状況

  • Python環境構築がされていない別のPCで実行したい
  • 開発側はPythonの環境構築が完了済み
  • 開発側PCも実行側PCもWindowsを使用している

手段

Pythonスクリプトをexeファイルにすることで、上記要望を満たします。

そのためのツールはいくつかありますが、今回は以下の2つを試してみました。

どちらも一長一短の性能です。

  • PyInstaller
  • nuitka

PyInstaller

インストール

pipコマンドでインストールします。

pip install pyinstaller

ビルド

exe化したいスクリプトがあるディレクトリで、下記コマンドを実行します。

スクリプトが依存する別のスクリプトやライブラリは、全て自動でexeファイルの中に詰め込まれます。

myscript.pyが目的のスクリプトです。

pyinstaller myscript.py

実行すると二つのフォルダが作られます。

フォルダ名説明
buildビルド時に使う中間フォルダ
distexeファイルが出力されるフォルダ

オプション

ビルド時に指定できるオプションの例です。

オプション説明
–onefile通常、distフォルダ内に複数のファイルが作られる。
このオプションをつけると、exeファイル1枚にまとめることが可能。
–noconsole通常、exeファイルを実行するとコンソールウィンドウが表示される。
このオプションをつけると、非表示になる。
いつ実行が終了したか分かりづらくなる問題がある。

例えば、以下のように実行します。

pyinstaller myscript.py --onefile

Nuitka

インストール

pipコマンドでインストールします。

pip install nuitka

ビルド

exe化したいスクリプト(myscript.py)があるディレクトリで、下記コマンドを実行します。

nuitka myscript.py

実行すると二つのフォルダが作られます。

フォルダ名説明
myscript.buildビルド時に使う中間フォルダ
myscript.distexeファイルが出力されるフォルダ

オプション

ビルド時に指定できるオプションの例です。

オプション説明
–standaloneexeファイルをPython環境なしで動作可能にする。
–onefileexeファイルを1枚にまとめる。
–windows-disable-consoleexeファイルを実行したときのコンソールウィンドウが非表示になる。

比較

上記で分かる通り、使い勝手はどちらもほぼ同じです。

どちらを使うか以下の点で決めます。

比較項目PyInstallerNuitka
知名度
ビルドの速さ×
exeファイルサイズ×
exeファイルの実行速度×