質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.39%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

652閲覧

py2exe.freezeの構文について

Y.K

総合スコア2

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2024/03/13 04:40

実現したいこと

py2exeを使ってexeファイルの変換は出来上がったのですが、その実行ファイルにアイコンを付けたい。

発生している問題・分からないこと

py2exeのexe作成にsetup.pyのスクリプトを削除して代わりに freeze API を使うように変更になったようです。
py2exe.freeze.mdより

EXE作成 > Python freeze.py

freeze(
console=[],
windows=[],
data_files=None,
zipfile='library.zip',
options={},
version_info={}
)
・script (str): path of the Python module of the executable target.
・icon_resources (list): list of 2-tuples (id, pathname) Icon used for the executable.

こちらを見ながら以下のスクリプトをfreeze.pyとして作成
from py2exe import freeze
freeze(
windows=[{'script': 'TEST.py'}]
)

distフォルダ下に実行ファイル群が出来上がりました。

アイコンを付けるため以下に変更
windows=[{'script': 'TEST.py'}, {'icon_resources': (1, 'TEST.ico')}]

Python freeze.py で実行すると

TypeError: This target class requires an attribute 'script'

書き方に問題があるようです。
アイコンを付けるには、どのような書き方が正解なのでしょうか?

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

アイコンを付けるため以下に変更
windows=[{'script': 'TEST.py'}, {'icon_resources': (1, 'TEST.ico')}]

Python freeze.py で実行すると

TypeError: This target class requires an attribute 'script'

書き方に問題があるようです。
アイコンを付けるには、どのような書き方が正解なのでしょうか?

補足

環境は、Windows 11 & Python 3.11.8
exe作成に py2exeのライブラリを使用。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

早速の回答をありがとうございます。

freeze(
windows=[{'script': 'TEST.py', 'icon_resources': (1, 'TEST.ico')}]
)

Python Frreeze.py で実行すると

resources = getattr(self, "bitmap_resources", []) + \ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

TypeError: can only concatenate list (not "tuple") to list

『リスト (「タプル」ではない) をリストに連結することはできません。』
と出てしまいます。
やはり書き方があるようなのですが、中々上手く出来ません。

投稿2024/03/14 03:25

Y.K

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

katsuko

2024/03/14 11:09

先の回答に追記しておきました。 なお、回答に対する返答は、回答のコメント欄で行うか、質問を編集して、「〇〇の回答をもとに対処したところ、…」というように追記するようにしてください。
guest

0

ベストアンサー

py2exeは知らないけど、py2exe.freeze.mdを見る限り、

python

1windows=[{'script': 'TEST.py'}, {'icon_resources': (1, 'TEST.ico')}]

ではなく、

python

1windows=[{'script': 'TEST.py`, 'icon_resources': (1, 'TEST.ico')}]

と書くのが妥当だと思いますが、いかがですか。
(「要素が一つしかない辞書をリストで持つ」なんて無意味なので、「リスト内の要素を辞書で持つ」と考えるほうが自然だと思います)


先のpy2exe.freeze.mdによると、

icon_resources (list): list of 2-tuples (id, pathname) Icon used for the executable.

とのことなので、

python

1windows=[{'script': 'TEST.py`, 'icon_resources': [(1, 'TEST.ico')]}]

じゃないですか。

投稿2024/03/13 13:36

編集2024/03/14 11:06
katsuko

総合スコア3533

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y.K

2024/03/15 00:39

回答ありがとうございます。 試したところ問題が解決しました! ベストアンサーに選ばせていただきました。
Y.K

2024/03/15 00:39

katsukoさんの回答して下さった以下の方法で目的の動作ができました。 windows=[{'script': 'TEST.py`, 'icon_resources': [(1, 'TEST.ico')]}] この方法で、今後のexe作成には、py2exe.freeze の API を使用することができそうです。 感謝致します。有り難う御座いました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.39%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問