pyinstallerとは?
Pythonコード、パッケージを全て一つの実行ファイル(exe)にまとめることができるライブラリです。通常のPythonのソースコードだとPythonがインストールされている環境でしか動作させることができません。しかし、exe化することでPythonがインストールされていないような第三者の環境でも動かすことが可能になります。
Pythonだけでなく、場合によっては作成したPythonプログラムで使っているパッケージなどのインストールも必要になりますし、仮にインストールしてもらえるとしてもソースコードで想定しているパッケージのバージョンとインストールバージョンが異なっていたら動かないです。
前提条件、注意点
- Python3.6以上であること
- Windowsで作った実行ファイルはWindowsでしか動かないですし、Macで作った実行ファイルはMacでしか動かないです。
- 64bitOSで作ったファイルは32bitOSでは動かない。逆に32bitOSで作った実行ファイルは64ビットOSで使えます。(上位互換性はないですが、下位互換性はあります。)
- 公式サイト(https://pyinstaller.org/en/stable/)にサポートされているライブラリ一覧はあるが、サポートされていなくても基本は実行ファイルにまとめることは可能です。
- Macの場合は他のマシンで作ったexeを実行する場合は警告が出ます。(「システム環境設定」→「セキュリティとプライバシー」にて設定解除してあげる必要があります。)
- 外部ライブラリを使う場合は一気にファイルサイズが大きくなります。(例えばPandasなど)
インストール
1 |
pip install pyinstaller |
一つの実行ファイルにまとめる
Windowsの場合
1 |
pyinstaller Pythonスクリプト名 --onefile |
上記コマンドを打つと打った場所と同階層に「dist」というフォルダが生成されてその中にexeファイルが生成されます。
1 2 3 4 5 |
import time print('Hello World') time.sleep(20) |
試しに上記のsample.pyというファイルを作成してまとめてみます。
1 |
pyinstaller sample.py --onefile |
distフォルダの中に「sample.exe」という実行ファイルができるので起動するといかのようにコンソールのウインドウが表示されて20秒間起動し続けます。

各種オプション
--noconsole
コンソールアプリケーションだったら問題ないのですが、例えばデスクトップアプリケーションなどを作った場合はコンソールは見せたくないのでそういった場合に使えます。
--icon=アイコン名.ico
exeのアイコンをカスタマイズする場合に使えます。アイコンは画像ファイルをiconに変換するサイトが存在するのでそれで生成するとよいでしょう。ちなみにfavicon画像にもいくつかサイズがあるのですが、対応していないサイズだとうまく表示されない場合があるので注意です。
ファイル名.spec
pythonファイルと同じ階層にspecと付いたファイルが生成されています。これはpythonを実行ファイルにまとめるための設定ファイルになります。pythonコード以外のものをexeに埋め込みたい場合に編集したりします。(例えば、Pythonプログラム内で画像を使っているのであればここに設定しないと埋め込めません。)
この記事へのコメントはありません。