

pythonスクリプトをcx_Freezeを使ってappしたのですが、起動したアプリの画像をDLしてthumbnailフォルダに保存する機能が上手く動作しません。最初はInfo.pilstによってカレントディレクトリのパスが変更した事によってプログラムが動作しないと思い。  
本来のパス `web/images/thumbnail/{videoID}.jpg` を
`MacOS/web/images/thumbnail/{videoID}.jpg`変更してビルドし直したのですが、上手くいかなかったのでパスが原因ではなさそうです。

そしてターミナルから直接 app(バイナリ)のある階層までいて
`./app`で実行するとちゃんと動作するためビルド時にライブラリ等が上手く読み込めなかった可能性は低くなぜ直接ターミナルから実行すると動作するのにsample.appをダブルクリックで実行した場合は上手く動作しないのかわかりません。

助けて頂けないでしょうか？よろしくお願いします。

**パッケージの構成**

[code]

       sample.app
         └── Contents
             ├── Info.plist #おそらくapp化によってカレントディレクトリがここに変更された。
             └── MacOS
                 ├── app #元々のスクリプトはここをカレントディレクトリに実行される事を元にパスを設定してる。
                 ├── web
                     ├── images
                         ├── thumbnail
    
[/code]

**追記**  
おそらく原因はsample.appをクリックしてプログラムを実行する際のパスが `/Users/UserName`になる事が原因だと思われます。  
絶対パスで指定する方法があると思うのですが、それだとsample.appの場所を移動するたびにパスの変更が必要なので現実的ではありません。できればパスをapp(EXEC）からスタートするようにしたいのですが、どのようにコードを書いて良いか分かりません。

**追記2**  
パスが原因だと考えていたのですが、試しにパスを指定せずに現在のパスに画像を保存するようにしたのですが、それでも上手く動作しなかったので、別の原因あるように思います。`sample.app`のダブルクリックでは動作が上手く行かないが、`app（EXECファイル)`ダブルクリックではしっかり動作します。`sample.app`はただのフォルダでクリックする事で中にある`app(EXECファイル)`を実行しているだけだと思うのですが、なぜ`sample.app`からだと上手く動作しないのか全く分かりません。

**追記3**  
app化したアプリで新しくファイルを生成したりするコードが走るとエラーになるみたいです。ログをテキストに出力するコードを追加したのですが、それが上手く動作しなかったのと、試しに
`open()`でダミーファイルを生成するコードを追加したり、コメントアウトするとそれに合わせてプログラムが動作しなかったりしたりを繰り返したためそう考えられます。  
権限が原因でしょうか？


CC BY-SA 4.0
2021-02-26T07:01:45.123
74284
2021-03-03T01:51:42.167
2021-03-03T01:51:42.167
22565
22565
question
python python3 cx-freeze
cx_FreezeでビルドしたPythonスクリプトexecでは動作するのに.appでは機能しない。