Pythonプログラムを実行させるためには、Pythonを実行させる環境が必要です。
つまり、どれだけ簡単なプログラムを実行するだけでも、Python環境を用意する必要があります。
正直それぞれのPCにPythonの環境をいちいち構築するのは面倒ですし、合理的ではありません。
そんな時に作るのが、Pythonのexeファイルです。exeファイルを作ることで、Pythonの環境とプログラムを詰め込んだファイルを作ることができます。
今回は、そんなexeファイルの作り方を紹介します。
PyInstallerをインストールする
まずは、PyInstallerをインストールします。
Anacondaの場合は、以下のコマンドをAnaconda Promptに入力します。
conda install pyinstaller
これで準備は完了です。
exe化するPythonファイルを用意する
それでは、exe化するファイルを用意します。今回は、以下のプログラムを用意しました。
超シンプルで無意味なプログラムですが、これも立派なプログラムです。
exe化する
Anacondaを使っている場合はAnaconda Promptを、そうでない場合はコマンドプロンプトを開きます。
カレントディレクトリを、プログラムの場所に指定します。
そして、以下のコマンドを実行します。
pyinstaller build_exe.py --onefile
“build_exe.py”の部分は、自分で作成したPythonファイルの名前に変えてください。
そうすると、Pythonファイルがあるディレクトリに、buildフォルダとdistフォルダが作成されます。
このdistフォルダの中に、作成されたexeファイルが入っています。
exeファイルを実行してみましょう。
実行することができました。このファイルは、Python環境がないPC上でも動作します。
ファイルのサイズに注意
Pythonのexeファイルは、注意しておかないと、とんでもないサイズのファイルになってしまう可能性があります。
PyInstallerでexe化をした場合、その環境に入っているパッケージ(ライブラリ)をすべてファイル内に詰め込んでしまいます。なので、サイズの大きいパッケージがその環境に存在すると、ファイルのサイズも肥大化してしまいます。
今回作成したプログラムは、これ専用の仮想環境を用意し、特にパッケージのインストールはしていません。
その結果、Pythonファイルが10MB程度でした。この環境に、色々パッケージをインストールした状態で再びexe化すると、同じプログラムでもファイルのサイズが大きくなってしまいます。
pandas、numpyに気をつけろ
exe化するときに特に注意してほしいライブラリが、pandasとnumpyです。これらは、サイズが大きく、exeファイル肥大化の主犯格です。
なので、exe化するプログラムの場合、pandasやnumpyを使わないのが無難だと思います。
また、使わない場合でもその環境にパッケージがインストールされている場合は、exe化の際に以下のようなコマンドで除外しましょう。
pyinstaller build_exe.py --onefile <span class="red">--exclude pandas</span> <span class="red">--exclude numpy</span>
–exclude 〇〇で、exe化の際に除外したいパッケージを指定することができます。コマンドでは何度も–excludeを使用できますが、数が多い場合には新たな仮想環境を作り、そこでexe化するのがいいと思います。
Anaconda環境に気をつけろ
Anaconda環境でexe化を実行する場合には、ファイルの肥大化にさらに注意が必要です。
Anacondaの場合、新しく仮想環境を作成しても、その中にはごちゃごちゃとモジュールが勝手にインストールされてしまっています。特に。pandasをインストールした際におまけでついてくるMKLというモジュールが、exe化した際に異様に肥大化するようです^^;
MKLモジュールはpipでインストールすると付属しないようです。なので、Anaconda環境では、潜在的にファイルの肥大化が起こりやすいということを認識しておく必要があると思います。
できれば、Anaconda環境ではないところでexe化を実行するのが無難でしょうか。
*なお、Anaconda環境でむやみにpipインストールすることはおすすめできません!!
まとめ
Pythonプログラムをexe化する方法を紹介してきました。
非常に簡単にexeファイルを作成できますが、ファイルサイズの調整はなかなか簡単にはいかなさそうです^^;
最善の方法としては、
・Anacondaを使わないPython環境でexe化を行う。
・それ専用の仮想環境を用意してexe化を行う。
の2点に注意すれば、肥大化しすぎて使えないファイルができたなんてことはなくなるのではないでしょうか。
みなさんがexe化したいときの参考になれば嬉しいです^^
ではでは👋