はじめに
今回はpyinstallerで.exeのアイコンが正しく設定されない時の対処法を紹介します。
これは、Pythonの.pyファイルを.exe化するライブラリーです。
Pythonの導入やpyinstallerが扱える事を前提にすすめます。
↓前提知識はこちらをご覧ください。
アイコンの変更方法
まず、アイコン用の画像を用意します。
形式は.pngなどで大丈夫です。

こちらをアイコンとして使えるようにするために「.ico」形式に変換します。
↓オンラインツールであれば、こちらを使うと素早く作れます。
(最大サイズ128 x 128px)

ローカル環境で動かしたい方、最大サイズを128px以上に設定したい方は…
Kritaを使って作成してください。
↓作り方はこちらで解説。

.icoの画像サイズは「256」や「128」pxあたりを設定すればokのようです。(詳細)
ただ、アイコンにデータ容量を使うのを避けるため…
「64」や「32」px派の人も居ます。
そしたら.icoの画像を.pyファイルと同じ場所に入れます。

この状態でpyinstallerを動かして.exe化します。

すると… 上手く行けば.exeファイルにアイコン画像が設定されます。


が… 上手くいかなかったのでこの記事があります。
上手くいかなかった方は、次以降の操作を試してください。

以上が、アイコンの変更方法です。
アイコンが変更されない原因
アイコンが変更されない原因として考えられるものは下記。
・Windowsのアイコンキャッシュが悪さをしている
・pyinstallerのキャッシュが悪さをしている
・.icoファイルの名前が悪さをしている
・.pyファイルの名前が悪さをしている
※キャッシュ = データを処理するために作られた一時的なデータ

.pyファイルは名前に「 _ (アンダーバー)」が入ってると、
アイコン設定ができないようです。
(私のエラーはこちらが原因でした)
こちらの対処法を1つ1つ見ていきます。
Windowsのアイコンキャッシュ削除
Windows+Rキーを入力。
ファイルを指定して実行の画面に下記の一文を打ち込み。
ie4uinit.exe -show
この状態で「OK」を押します。

これで、Windowsのアイコンキャッシュデータが削除されるようです。
以上が1つ目のアイコンキャッシュによるエラー対策です。
pyinstallerのキャッシュ削除
pyinstallerのキャッシュ情報があると、上手く動かない事があります。
こちらはコマンドプロンプトでpyinstallerを実行する際に下記の一文を入力。
"半角スペース" --clean
これを入れる事で削除できます。

まずWindowsとpyinstallerのキャッシュ削除が一番簡単な対処法です。
それでも動かない場合は、自分で別の原因を調べていく必要があります。


これで動かない場合は名前系のエラーの可能性が高いです。
ファイルの名前やファイルパスの名前を見直してください。
以上が、pyinstallerのキャッシュ削除方法です。
.icoファイルの名前変える
.icoファイルは私の環境だと「image.ico」という名前にするとプレビューの形が変わりました。
なので「image.ico」以外の名前に設定。

そして、実行側の名前も忘れずに変更。


動かし方が分かってから、試しましたが…
logo.icoでも、image.icoでも動きました。
(なので.icoのファイル名が原因の可能性は低そうです)
あとPCを一度落として、次の日に確認したらが治ってました。
(多分Windows OSのファイルキャッシュの問題です)

以上が、.icoファイルの名前変える方法です。
名前の「 _ 」を消す(これで解決)
pyinstallerは.pyファイルの名前に「 _ (アンダーバー)」があるとエラーが出ます。
こちらが入ってると、アイコンが正しく設定されません。

アイコンを設定しない場合は「 _ 」が入ってても動きました。
けれど “アイコンを設定” しようとすると、エラーが出ます。

このように、プログラムにおける “名前” はシビアで
エラーの原因になりやすいです。
なので、名前は全てアルファベットで構成するのが安全。
日本語名、全角英語、スペース、アンダーバー、その他の記号を使った方はその辺りを見直してください。
対処法は簡単。
ファイルの名前を「 _ 」が無いモノに変更。

コマンドプロンプト側も忘れずに名前を変更。
そして、このまま実行。

すると、アイコンが変わります。

以上が、アイコンが変更されない原因と対処法です。
アイコンの大きさはPCを再起動で治る
先ほど設定したアイコンは、なぜか小さい大きさになりました。

こちらは… PCを一度落として、翌日見たら治ってました。
(たぶんPC再起動で治ります)


こちらも、Windows OS側が保存したアイコンファイルのキャッシュエラーだと思います。
もし治らない方は「Windowsのアイコンキャッシュ削除」の処理をしてから再起動してください。
それでもダメなら… 1日ぐらい開けると時間が解決することがあります。
以上が、アイコンの大きさはPCを再起動で治るの解説です。
まとめ
今回はPythonのpyinstallerを使った際に.exeアイコンが設定されない時の対処法を紹介しました。
・アイコンは.pyファイルと同じファイルに入れる
・アイコンの画像は.ico形式で用意する
・pyinstaller実行時に「–icon=ファイル名.ico」を入力すると設定できる
・上手く動かない場合はキャッシュ削除やファイル名の変更などを確認する
・.pyファイルの名前に「_ (アンダーバー)」が入ってると動かない
また、他にもPythonやプログラムについて解説してます。
ぜひ、こちらもご覧ください。
コメント