Skip to content

pyxel.reset() works locally but crashes after exe build #649

@shiromofufactory

Description

@shiromofufactory

本文日本語で失礼します。

pyxel.reset()機能を使ってプログラムを再起動すると、ローカル実行時には正常に動作する(再起動する)のですが、exe実行時はそのタイミングで「Failed to remove temporary directory: C:¥Users¥user¥AppData¥Local¥Temp¥_MEI60002」のようなエラーメッセージが表示されてプログラムが落ちてしまいます。

ChatGPTに問い合わせたところ以下の見解でしたが、これはユーザー側の対応で解決できる問題でしょうか?

症状からすると PyInstaller の one-file 実行形式で展開される一時フォルダ(_MEIxxxxx)のクリーンアップ失敗が原因の可能性が高いです。
pyxel.reset() は内部で自分自身を再実行する(execv 相当)ため、**終了時に親プロセスが _MEI... を削除しようとした瞬間、まだそのディレクトリを掴んでいる(=カレントディレクトリや開きっぱなしのファイルハンドルが残っている)**と、PyInstaller ブートローダが「Failed to remove temporary directory …」で落ちます。ローカル(.py 実行)だとこの仕組みがないので再現しません。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions