
実現したいこと
fletライブラリとpyinstallerでexe化し、画像を読み込ませて表示したい
前提
python3.10
pyinstaller
flet
Macbook pro OS Monterey 12.3.1
実行
pip install pyinstaller % pyinstaller file.py --add-data 'assets/neko.png:.' --onefile
該当のソースコード
python
1import flet as ft 2import os 3import sys 4 5if getattr(sys, 'frozen', False): 6 # exeファイルから実行されている場合 7 base_path = sys._MEIPASS 8else: 9 # Pythonスクリプトとして実行されている場合 10 base_path = os.path.dirname(os.path.abspath(__file__)) 11 12image_src = os.path.join(base_path, "assets", "neko.png") 13 14print('base_path:', base_path) 15print('image_src:', image_src) 16 17 18def main(page: ft.Page): 19 page.window_top=50 20 page.window_left=150 21 page.window_width=350 22 page.window_height=400 23 image_change = ft.Image(src=f"/neko.png") 24 25 page.add( 26 ft.Row( 27 [ 28 ft.Container( 29 ft.Column( 30 [ 31 ft.Image(src=image_src, 32 width=110, 33 height=150, 34 fit=ft.ImageFit.CONTAIN, 35 ), 36 ], 37 scroll=ft.ScrollMode.AUTO, 38 ), 39 #expand=True, 40 margin=10, 41 padding=10, 42 bgcolor=ft.colors.AMBER_400, 43 border_radius=10, 44 alignment=ft.alignment.top_center, 45 ) 46 ], 47 ), 48 ) 49if __name__ == "__main__": 50 ft.app(target=main)
ディレクトリ
main_directory----file.py |__assets |____neko.png
発生している問題・エラーメッセージ
python file.pyコマンドで実行するとしっかり出力
しかしpyinstallerにより作成されたdistフォルダにできたものをダブルクリックで実行しても以下になっていました。
試したこと
python
1if getattr(sys, 'frozen', False): 2 # exeファイルから実行されている場合 3 base_path = os.path.dirname(sys.executable) 4else: 5 # Pythonスクリプトとして実行されている場合 6 base_path = os.path.dirname(os.path.abspath(__file__))
distフォルダを取ってくることなどで目当ての画像が取得できませんでした。
どのようにしたらexe化時に目当ての画像を取得できるでしょうか。
--onefileを使わないでディレクトリごとというのは避けています。exeファイルで一本化したいと考えています。アドバイス頂けないでしょうか。よろしくお願いいたします。



あなたの回答
tips
プレビュー