見出し画像

PyInstallerでPythonファイルをexe化

Pythonで作成したファイルをexe化したい!

人によってはそういったこともあると思います。例えば、Excelファイルの入力業務を自動化するPythonファイルを作ったとき、それをPythonを触ったことのない職場メンバーに提供することができれば、職場全体の業務効率を改善することができます。

この記事では、PyInstallerを用いてexeファイルを作成する方法について書いていきます。

環境

私は以下の環境でPythonを扱っています。
ご参考までに。

・windows 10(64bit)
・python 3.8.2(32bit版)
・エディタ Visual Studio Code 1.53.1

ライブラリインストール

コマンドプロンプトを起動して以下のコマンドを入力すれば pip で PyInstaller のライブラリをインストールすることができます。

py -m pip install pyinstaller

PyInstaller では以下のライブラリが要求されます。上記のように pip でインストールを行えば自動でダウンロードされますが、オフライン環境やアクセス制限のあるパソコンでインストールする際は、別途以下のライブラリをダウンロードしてきてインストールしておく必要があります。

私は32bit版のPythonを使用しています。Pythonを勉強し始めた当初に参照していた資料が32bit版を使用していたため。そのため一部32bit用のライブラリがあるかもしれないので、ご使用の環境にあわせてご対応ください。

・future
・pywin32-ctypes
・pyinstaller-hooks-contrib
・pefile
・altgraph
・pyinstaller

exe ファイル作成

今回は PySimple GUI で作成したファイルをexe化します。ソースコードはこちらの記事を参照ください。

扱うソースコードのファイル名は「gui_test.py」にしています。このファイルが保存されているディレクトリでコマンドプロンプトを起動します。以下のようにフォルダ上部のところに「cmd」と入力して Enter を押すとそのディレクトリでコマンドプロンプトを簡単に起動できます。

画像1

画像2

コマンドプロンプトを起動後、以下のように入力して実行すればexe化が開始されます。

py -m PyInstaller gui_test.py --onefile

実行後、以下のようにファイルとフォルダがいくつか生成されます。

画像3

フォルダ「dist」を開くと中に「gui_test.exe」が生成されています。さきほどコマンドプロンプトにて「--onefile」を加えて実行するとこのように関連するファイルを1つにまとめてexe生成されます。「--onefile」を加えないで実行すると他にも多数のファイルが生成されます。

画像4

exeファイルを実行すると以下のように作成したGUI画面が表示されます。

画像5

つまづいた点(No module named pyinstaller)

pyinstaller を実行した際につまづいた箇所があったので記録しておきます。コマンドプロンプトで以下のように入力して実行しました。

py -m pyinstaller gui_test.py --onefile

その結果、以下のように表示されてしまいexeファイルを作成できませんでした。

No module named pyinstaller

原因は 大文字 でした。

「pyinstaller」⇒「PyInstaller 」に変えたらOKでした。

py -m pip list でインストールされている pyinstaller を表示させるとすべて小文字でpyinstallerと表示されているので、すべて小文字だと思っていました。実際には「PyInstaller 」と入力しなければならないようです。

Package                   Version
------------------------- ---------
pyinstaller               4.2

おわりに

この記事ではPythonで作成したファイルをexe化する方法について書きました。exe化することでPythonで作成したマクロ的なものも、Pythonを扱えない方に提供してあげることが可能になります。これで仕事をどんどん自動化して作業効率を良くしていきたいです。

「pyinstaller」ではなく「PyInstaller 」と入力しなければならない点は、かなり困りましたが、こういった事があるんだなと勉強になりました。

他にもPythonの記事を書いているので、ぜひ読んでみてください。


何かお役に立てたら、サポートしていただけると嬉しいです!モチベーションを高めて、アウトプットしていきます!