Python

【Python】Pythonファイルを実行ファイルに変換する方法【exe化】

この記事では、Pythonファイルを実行ファイルに変換する方法を解説します。実行ファイル化(exe化)することでPythonがインストールされていない環境でも実行することができます。

実行ファイルとは?

実行ファイルとは、exeファイル(エグゼファイル)やexecファイルなどの総称で、ダブルクリックするだけで処理を実行できるファイルのことを言います。

実行ファイルは、必要な環境(ここではPyhton)がインストールされていない場合でも処理を実行することができます。

それにより、幅広く配布が可能となります。

実行ファイル化(exe化)

それでは、Pythonファイルを実行ファイルに変換する方法を見ていきましょう!
ここでは人気の高いpyinstallerを使用します。

pyinstallerのインストール

pipコマンドを使ってインストールします。

pip install pyinstaller

pyinstallerの使い方

pyinstallerコマンドを使って以下のようにexe化します。

pyinstaller スクリプト名

実行ファイル化してみる

試しに適当なPythonファイルを実行ファイル化してみましょう!
今回は、以下のtest.pyを使います。

test.py

print('Hello world')

そしたら、ターミナルなどのコマンドラインから以下のコマンドを実行します。

pyinstaller test.py

実行するといろいろ表示され、

$ pyinstaller test.py                                        
239 INFO: PyInstaller: 4.5.1
239 INFO: Python: 3.9.0
268 INFO: Platform: macOS-10.15.7-x86_64-i386-64bit
277 INFO: wrote /Users/user/Desktop/Python/test.spec
411 INFO: UPX is not available.
413 INFO: Extending PYTHONPATH with paths
['/Users/user/Desktop/Python', '/Users/user/Desktop/Python']
713 INFO: checking Analysis
714 INFO: Building Analysis because Analysis-00.toc is non existent
・
・
・
略

test.pyと同じディレクトリに複数のディレクトリやファイルが作成されます。

実行ファイルは、distディレクトリに格納されています。

見つけたらダブルクリックで実行してみましょう!
すると、以下のように Hello world が出力されました。

オプション

1つのファイルにまとめる

--onefileオプションを付けることで、1つのファイルにまとめることができます。

pyinstaller test.py --onefile

以下のように1つのファイルにまとめられてスッキリします。

コンソールを表示しない

--noconsoleオプションを付けることで、実行ファイルを処理しているときにコンソールを表示できなくします。

pyinstaller test.py --noconsole

GUIアプリケーションなどを実行ファイル化する際に指定します。

実行ファイル名の指定

--nameオプションを付けて名前を指定することで、実行ファイル名を指定できます。

pyinstaller test.py --name mytest --onefile

mytestという名前で実行ファイルが作成されました。

他にも様々オプションが用意されています。詳しくは公式サイトを参照してください。

LinkOptions – Using PyInstaller — PyInstaller 4.5.1 documentation

エラーが発生した時の対処法

エラーを特定する

pyinstallerは環境によって様々なエラーが発生します。そんな時は、--noconsoleオプションを外し、--debug allオプションを付けましょう!

pyinstaller スクリプト名 --debug all

すると実行ログが可視化されるのでデバッグしやすくなります。

pyenvを使っている場合

pyenvを使っている場合エラーが発生することがあります。そんな時は以下のように、オプションを付けながらpyenvで使用するPythonを再インストールする。

PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.9.0

LINKMacでpyinstallerを使ってPythonコードから実行ファイルを生成した時の記録(OSError: Python library not found: libpython3.7m.dylib, .Python, libpython3.7.dylibの回避) – Qiita

まとめ

この記事では、Pythonファイルを実行ファイル(exe化)にする方法を解説しました。

exe化することで環境に関係なく実行できるようにしました。
成果物を配布するのにとても便利です。

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ

最短3か月でエンジニア転職『DMM WEBCAMP COMMIT』