Pythonで作成されたスクリプトを他のPCで動かしたい場合は、Python環境の準備、ライブラリの準備などが必要となり大変です。
そこでPythonスクリプトを実行ファイル化し、すべてを1つにまとめることで簡単に他のPCでも動かすことが可能となります。
この記事では『pyinstaller』モジュールを使用して、Pythonスクリプトを実行ファイルにする方法を解説したいと思います。
pyinstallerのインストール
『pyinstaller』モジュールのインストールは次のコマンドで可能です。
pip install pyinstaller
pyinstallerの使用方法
1つの実行ファイルにまとめるには次のコマンドで行います。
pyinstaller Pythonファイル名 --onefile
上記、コマンドを実行すると『dist』というフォルダの中に『ファイル名.exe』でexeファイルが作成されています。
実行ファイルパスの参照について
実行ファイルのパスを「os.path.dirname(__file__)」で取得する場合、「exe化前(.py)」と「exe化後(.exe)」で結果が異なります。
今回、実行したディレクトリは「C:\Python\pyinstaller」です。
「exe化前(.py)」の結果 | C:\Python\pyinstaller |
---|---|
「exe化後(.exe)」の結果 | C:\Users\ユーザ名\AppData\Local\Temp_MEI68602 |
「exe化後(.exe)」の実行ファイルのパスは『os.path.dirname((sys.executable)』を使用して取得できます。
ただし、「exe化前(.py)」の実行ディレクトリは想定通りの値が取得できなくなります。
「exe化前(.py)」の結果 | C:\Users\ユーザ名\AppData\Local\Programs\Python\Python310 |
---|---|
「exe化後(.exe)」の結果 | C:\Python\pyinstaller |
ですので、「exe化前(.py)」と「exe化後(.exe)」のどちらも想定した通りのパスを取得する為にはexe化した場合とexe化していない場合で処理を振り分ける必要があります。
import os
import sys
if getattr(sys, 'frozen', False):
print(os.path.dirname((sys.executable)))
else:
print(os.path.dirname(__file__))