Pythonのプログラムを作成した時に
配布先のPCにPythonがインストールされておらず
Pythonプログラムを実行できないことがあります。
その場合はPythonコードからexeファイルを作成して配布します。
Pythonのコードからexeファイルを作成するにはPyinstallerを使用します。
実行環境
- Windows10 Home
- Python 3.6.6 64bit または Anaconda Python 3.6 Version 64bit
exeの作成手順
pipを利用してpyinstallerをインストールします。
コマンドプロンプトまたはAnaconda Promptを起動し、下記のコマンドを入力します。
1 |
pip install pyinstaller |
C:\exetestにexetest.pyを置きました。
exetest.pyの内容は以下になります。
メッセージを表示後、Enterを押すと実行を終了します。
1 2 |
print("exe化テスト!") input("画面を閉じるにはEnterを押してください。") |
コードを置いたフォルダに移動します。
1 |
cd C:\exetest |
pyinstallerで対象のコードをexe化します。
1 |
pyinstaller exetest.py --onefile |
配布が簡単になるのでonefileオプションをつけましょう。
onefileオプションあり
onefileオプションなし
今回のコードは小さいのでexe化処理はすぐに完了します。
コードのサイズが大きい場合、exe作成処理に数分かかることがあります。
exe化の処理が完了すると、C:\exetestにdistフォルダが作成されます。
distフォルダ内にexetest.exeが作成されます。
exetest.exeをダブルクリックで実行すると、exetest.pyのコードが実行されます。
Pyinstallerからexeを作成するメリット
Pyinstallerを使用すると簡単にpythonのコードからexeファイルを作成できます。
Pythonをインストールできない環境でも、Pythonプログラムを動かすことができます。
Pyinstallerからexeを作成するデメリット
exeの容量がソースコードに比べて、かなり大きくなります。
テストで使用したコードは1KBでしたが、exeは6MBになりました。
importしているパッケージによっては、さらにサイズが大きくなります。
以前、pandasとscikit-learnを利用したコードをexe化したときは
exeのサイズが約90MBになりました。
サイズが肥大化した場合は、配布方法について別途考慮する必要があります。
実行ファイルのサイズ肥大化の対処方法
Intel MKLライブラリを含むときはvenvを使用してみる
Anacondaの仮想環境でPyinstallerを使用した場合、importしたパッケージと
コードの内容によってはIntel MKLライブラリを含みます。
distフォルダでIntel MKLライブラリを含んでいるか確認できます。
性能が良いのですがサイズが大きいです。

処理速度よりも、とりあえず容量を削減したいときはvenvで仮想環境を構築します。
venvの仮想環境のPyinstallerでexeを作成すると、Intel MKLライブラリを含まない
exeを作成できます。
venvの使用方法は下記のページが分かりやすいです。

エラー対応方法
Please install PyWin32 or pywin32-ctypesと表示される
Please install PyWin32 or pywin32-ctypes.
上記のように表示される場合は、下記のコマンドを入力して
PyWin32をインストール後pyisntallerでコードをexe化します。
1 |
pip install pypiwin32 |
ImportError: No module named typedefsと表示される
scikit-learnを利用したコードをexe化すると
ImportError: No module named typedefsと表示されることがあります。
pyinstallerで下記のオプションをつけてexe化します。
1 |
--hidden-import sklearn.neighbors.typedefs |

コメント