python プログラムの exe化 の方法を記しておきます ![]()
実はノウハウの必要とするところなんじゃないかな、と感じたため残すこととしました
ややこしい話もあるけど、「まずは試してみたらできました!!」の体験を大事にしたいので、
ややこしい話は抜きに手順だけ示したく、以下の順で述べます
1 とにかく exe化
2 仮想環境を使って軽量化(というより重量化の抑止)
3 アイコンの封入
1 とにかく exe化
細かいことはさておき、さっさと exe化 を試したいなら以下の手順で exe ができあがります
pip install pyinstaller
pyinstaller --onefile sample.py
--noconsole はお好みで付けたらよいかな
上記の実行で、dist フォルダができて、そこに sample.exe ができあがっています
ご確認くださいませ ![]()
![]()
![]()
2 仮想環境を使って軽量化(というより重量化の抑止)
python 開発環境には 過去に pip install したライブラリもすべて入っています ('ω')
そこには exe化したいアプリで使うライブラリ以外も当然ながら存在するので、
そこで exe化 すると不要なライブラリも含まれ、とっても大きな exe ができあがっちゃいます ( ゚Д゚)ノシ
私の環境だと、100MB を超えるものが作られます!! (;^ω^)
なので、仮想環境を作って、そこで必要なライブラリを pip install して exe化します ('ω')ノ
python -m venv venv
venv\Scripts\Activate
pip install pyinstaller
pip install *** ※ *** は適宜必要なものをご指定くださいませ
python -m PyInstaller --onefile sample.py
仮想環境を終わるときは以下のコマンドをたたいておきましょう (・ω・)
うっかり忘れると、別アプリ用のライブラリをインストールするなど、悲しい事故がおきます (;^ω^)
venv\Scripts\Deactivate
3 アイコンの封入
作ったアプリには独自のアイコンを表示させたいですよね (/o\)
exe化する際のコマンド引数に --icon=icon.ico を入れるとアイコンが入るけど・・・
Window を持つアプリの場合の Window の左上のアイコンは変化しないです
調べるのに苦労しました (;^ω^)
あわせて変更する方法を記します
アイコンを指定するところを下記のように変更をして、
icon_path = get_resource_path("icon.ico")
root.iconbitmap(icon_path)
上記で呼ばれる関数(以下)を配置する
def get_resource_path(relative_path):
"""PyInstaller でパッケージ化された実行ファイルからのパスを取得"""
if getattr(sys, 'frozen', False):
# PyInstaller でビルドされた場合
base_path = sys._MEIPASS # 一時ディレクトリに展開される
else:
# 通常のスクリプト実行時
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
exe化の際のコマンドは以下のように指定する
python -m PyInstaller --onefile --icon=icon.ico --add-data "icon.ico:." sample.py
以上でいい感じにアイコンが表示されると思います ('ω')ノ
0 件のコメント:
コメントを投稿