前回は、作成したアプリケーションのデバッグを行いました。これで目的のアプリケーションは完成です。今回は、これまでPythonで作成してきたファイルを、Windowsの実行ファイル形式(exe)へ変換してみましょう。
py8-001
※) 当ブログの連載が書籍になりました!!(Amazon購入ページ)(書籍の紹介記事banner_1

Pythonファイルをexe化するには?

Pythonファイルをexe化する代表的なものは、py2exe, cx_Freeze, Pyinstaller3つのライブラリです。どのライブラリを使用するかは、好みによりますが、初心者には「Pyinstaller」がおすすめです。理由は、exe化する方法が非常にシンプルな点です。

方法は簡単です。まず、Pyinstallerは外部ライブラリなので、自身のPCにインストールします。次に、プロンプト画面から、exe化したいファイルを指定して実行するだけです。

Pyinstallerをインストールしよう

それでは早速、Pyinstallerをインストールしていきましょう。本連載の第一回で、Anacondaを導入しましたね。インストールしたフォルダに「Anaconda Prompt (Anaconda3)」というファイルが存在するので、起動してください。
py-002
起動したプロンプト画面に以下のコードを入力すると、Pyinstallerのインストールが開始します。インストールが完了したら、直ちにPyinstallerが使用できるようになります。
conda install -c conda-forge pyinstaller

Pythonファイルをexe化してみよう

まずは、exe化するPythonファイル(拡張子.py)を準備しましょう。前回、完成したアプリケーションのコードを、テキストエディッタにコピペして、拡張子「.py」で保存します。ここでは、ファイル名を「Gxzy.py」で保存しています。

exe化する前に、必ずPythonファイル自体がきちんと動作するかチェックしておきましょう。動作確認が済んだら、先程、起動したAnaconda Prompt 画面に、コードを入力します。まずは、Pyinstallerを実行するディレクトリに移動しましょう。

cd ディレクトリ名」で「Gxzy.py」を保存したディレクトリへ移動します。ここでは、デスクトップに「Gxzy」というフォルダを作成して、その中に「Gxzy.py」を置いています。つまり、以下のコードを入力し、[Enter]キーを押します。「***」の部分は、ユーザ名なので、各々異なるはずです。
cd C:\Users\***\Desktop\Gxzy
移動が完了すると、プロンプト画面で以下のように表示されます。
(base) C:\Users\***\Desktop\Gxzy>
準備が整ったので、いよいよPyinstallerでexe化してきます。プロンプト画面に、以下のコードを入力するとPythonファイル(拡張子.py)のexe化が開始します。
pyinstaller Gxzy.py --noconsole --onefile
ファイルの変換が終了すると、実行したディレクトリに以下のファイルが作成されたはずです。変換したexeファイルは「dist」というフォルダ名の中にあります。
py8-003

作成された「Gxzy.exe」以外のファイルは不要なので、削除しても構いません。「Gxzy.exe」を実行して、動作を確認してみてください。問題なく動作するはずです。

おそらく、アプリケーションが起動するのに数秒かかったはずです。起動時間が気にならない場合は、これですべての作業は完了です。しかし、「こんな起動時間が遅いと、嫌だなぁ...」と感じた方は、作成されたファイルを、全て削除してから、再度以下のコードでexe化してみてくださ。
pyinstaller Gxzy.py --noconsole
つまり、先述のコードから「--onefile」を削除しています。この「onefileオプション」を追加すると、先程、distフォルダ内に「Gxzy.exe」のみが出力されたように、必要なファイルを一つのパッケージにまとめてexe化してくれます。利便性が上がる反面、実行時に、全てのパッケージを展開してから実行するので、起動時間が遅いというデメリットがあります。

では、「--onefile」オプションを追加せずに実行した場合はどうでしょう?distフォルダ内に「Gxzy」というファイルが作成され、その中に大量のファイルが見つかるはずです。その中に「Gxzy.exe」があるので起動してみましょう。
py8-004
今度は、直ちに起動したはずです。onefileオプションを使用しない場合は、Gxzyフォルダ以外のファイルは削除しても構いません。しかし、Gxzyフォルダ内のファイルを削除してはいけません。また、作成した「Gxzy.exe」を、Gxzyフォルダ外で実行しても動作しないので注意が必要です。

もし、実行ファイルにアイコンを設定したい場合は以下のように、iconオプションで、アイコンファイル(拡張子.ico)を指定する必要があります。ちなみに、「--noconsole」について説明していませんでしたが、このオプションは、アプリケーションの起動時にコンソール画面を非表示にするためのものです。コンソール上で結果を出力するアプリケーションなどの場合は、外してください。
pyinstaller Gxzy.py --noconsole --onefile --icon=Gxzy.ico
onefileオプションで作成したアプリケーションと、ソースコード、アイコン、サンプルファイル(H2O.out)をまとめたzipファイルを置いておきますので、参考にしてください。

http://pc-chem-basics.blog.jp/Gxzy.zip

スポンサードリンク

MacでApp化するには?

Macの場合、標準でPythonがインストールされているので、スクリプト自体(拡張子.py)を配布すればよいという考えが一般的です。もし、どうしてもapp化したい場合は、Mac環境でも、先述のPyinstallerのインストールからexe化した同じコードを利用できます。

しかし、MacでPyinstallerを使用する場合は、環境によってエラーが発生するケースが多いので、あまりおすすめしません。これはPyinstallerに限ったことではありません。Macの場合、どのライブラリーでも表示に関する不具合が多いのが現状です。残念ですが、app化してみて上手く行かない場合は、早々に諦めた方がよいでしょう。

Pythonファイルをexe化するメリットとは?

Pythonファイルをexe化する大きなメリットは、「Pythonをインストールしていないユーザーでも実行できるようになる」という点にあります。

作成したアプリケーションを配布する場合は、使用するユーザーを想定して、exeやappなどの実行ファイル形式に変換するかを判断するとよいでしょう。例えば、普段からPythonを多用している業種のユーザー向けには、スクリプト自体(拡張子.py)を公開した方が親切な場合があります。製作者側もファイル変換の面倒な作業から開放されます。

一方で、「そもそもPythonてなに?」「Pythonは聞いたことがあるけど..」というユーザー向けには、exeやappなどの実行ファイル形式に変換して配布したほうが親切ですよね。

Pythonファイルを配布する際の注意点

そもそも、アプリケーションを配布する予定もなく、自分自身で使用する場合は、ファイルを変換する作業は面倒なので、おすすめしません。Pythonファイル自体を配布する際は、外部ライブラリを多用したスクリプトの場合、注意が必要です。

その場合、ユーザーに必要なライブラリのインストールを、お願いする必要があります。また、標準ライブラリ(TkinterのようにPythonにあらかじめインストールされているライブラリ)でも、バージョンの違いによって動作しない場合があります。

例えば、本連載で作成したアプリケーションは、Pythonのバージョン2 系ではエラーが発生します。これは、Tkinterの文法がPython3系と2系では異なるためです。Pythonスクリプト自体を配布する場合は、Pythonのバージョン外部ライブラリの使用の有無などを、ユーザーに伝えることも重要です。

おわりに

今回は、PythonファイルをWindowsの実行ファイル形式(exe)へ変換する方法を解説しました。これで、本連載の目的は全て達成しました。お疲れさまでした!!

本連載は、最後に「改造編」としてGUIをカスタマイズするコード例を紹介して終了します。


【関連記事】
Pythonではじめるアプリ開発 ①:Python環境構築編
Pythonではじめるアプリ開発 ②:Python GUI編 その1
Pythonではじめるアプリ開発 ③:Python GUI編 その2
Pythonではじめるアプリ開発 ④:関数編
Pythonではじめるアプリ開発 ⑤:テキスト処理編
Pythonではじめるアプリ開発 ⑥:完成編
Pythonではじめるアプリ開発 ⑦:デバッグ編
Pythonではじめるアプリ開発 ⑨:改造編 その1
Pythonではじめるアプリ開発 ⑩:改造編 その2(終)