hotch-potch, Note to self

いろいろ作業記録

pyinstallerで生成した実行ファイルが動かない

1.はじめに

pyinstallerで実行ファイルをエラーなく生成完了したのに、生成したexeファイルを実行すると何もせず(エラーも出ず)そのまま終了してしまう現象がありました。 (pythonの引数にpyファイルを与えて実行することは当然できるものとします)

特定の環境で起きるのかどうかよくわからないですが、とりあえず処置方法を残します。

実行環境

  • WindowsPython Ver.3.7
  • pip経由でインストールしたpyinstaller Ver.4.7
  • envで仮想環境を作っている
  • __main__を含むファイル(ここではHoge.py)から、別のpyファイルのクラスを呼び出して実行している1
> ...\env\Scripts\python.exe --version
Python 3.7.8
> ...\env\Scripts\pyinstaller.exe --version
4.7

状況

>...\env\Scripts\pyinstaller.exe --onefile --clean Hoge.py
89 INFO: PyInstaller: 4.7
89 INFO: Python: 3.7.8
89 INFO: Platform: Windows-10-10.0.19041-SP0
...
8398 INFO: Updating resource type 24 name 1 language 0
8421 INFO: Appending PKG archive to EXE
10114 INFO: Building EXE from EXE-00.toc completed successfully.

実行します。

> dist\Hoge.exe

>

何も処理せず空白行だけ出てきて、終了してしまいます。

2.結論

pyinstaller コマンドに与える引数のファイル名を、すべて小文字(Hoge.py→hoge.py)にする。

> ...\env\Scripts\pyinstaller.exe --onefile --clean hoge.py
89 INFO: PyInstaller: 4.7
89 INFO: Python: 3.7.8
89 INFO: Platform: Windows-10-10.0.19041-SP0
...
8398 INFO: Updating resource type 24 name 1 language 0
8421 INFO: Appending PKG archive to EXE
10114 INFO: Building EXE from EXE-00.toc completed successfully.

実行します。

> dist\hoge.exe
...(処理が進む)
>

hoge.py自体のファイル名の先頭は、大文字のままで構いません。 pyinstallerに与える引数を小文字にするだけで、結果が変わります。

3.まとめ

対処療法的な結論ですが、ご参考になれば幸いです。 (なんでこんなことに・・・)


  1. これが何か影響しているのかなぁ・・・