Open1

Fletをデスクトップアプリにビルドしたときのカレントディレクトリ

MatsuSpringMatsuSpring

Fletをflet build windowsコマンドでネイティブアプリとしてビルドしたときに、ファイルの出力場所がわからなくて調べた話。
※Windowsの話です。

コード内では出力先を./sample_output.wavという指定をしていました。

flet runで普通に実行する場合には問題ないのですが、いざビルドすると挙動が変わりました。
相対パスで指定しているので直感では実行ファイルと同じ階層にできそうですが、実際はC:\Users\[ユーザー名]\AppData\Roaming\Flet\[Fletのアプリ名]\flet\app\内にsample_output.wavが作成されていました。

以下のようなコードをビルドしてみると、認識されているカレントディレクトリが実行ファイルの場所とは異なるのがわかります。

main.py
import flet as ft
from pathlib import Path

def main(page: ft.Page):
    dir = ft.Text(value=str(Path.cwd()))
    page.add(dir)

ft.app(main)

実用的にアプリを作るには、ft.FilePickerなどを使用してユーザーに明示的に保存場所を指定させたり、Path.home()を使ってホームディレクトリを利用するとよさそう。