@nagoya_nomad

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Windowsにおいて、pyinstallerで作成したexeファイルを実行したら、一瞬ターミナルが現れるがすぐに消えてしまい、プログラムが実行されない。しかし、ターミナルからexeファイルを実行すると問題なく動作するのは何故でしょうか?

解決したいこと

MacBook Air、macOS 12.4、
Python 3.13.3、selenium 4.32.0

 という環境でスクレイピングプログラムを作成しました。作成には仮想環境を利用しています。

 作成したプログラムディレクトリをWindowsノートブックパソコンでexe化して使うために次のように作業を行いました。

  1. Python 3.13.3をインストール
  2. 仮想環境を作成
  3. 仮想環境下でMacと同じバージョンのSeleniumをインストール
  4. pyinstallerをインストール(Ver.6.14.1)
  5. 上記のプログラムディレクトリを仮想環境下にコピーして、そのディレクトリに移動
  6. 次のコマンドを実行
pyinstaller my_program.py

【質問】
 Windowsターミナルからmy_program.exeを起動すればいいのですが、他の人にexeファイルを渡して使ってもらいために、下記の【問題】に対する対策を知りたいと考えています。

pyinstallerに詳しい方、解決方法を教えて下さい。
よろしくお願いいたします。

発生している問題・エラー

【問題】
 その後distディレクトリ内のmy_program.exeを起動したら、予想どおりにWindowsターミナルは表示されましたが、一瞬表示されただけで消えてしまい、プログラムも終了してしまいました。

 一瞬見えたところでは紫色の文字と白色の文字が何行か表示されていましたが、何を表示していたかは確認できませんでした。

自分で試したこと

【一部解決】
 原因が不明のまま、次にWindowsターミナルからmy_program.exeを起動したら、期待どおりにプログラムが実行しました。

0 likes

4Answer

いろいろとアドバイスをありがとうございました😊
スタックオーバーフローだと、不愉快な回答や、もっと詳しく教えろだとか、疑うような回答が多いので、今回こちらで質問しました。

その後、Pythonとpyinstallerとのダウングレードを行い、問題が解決しました!

Pythonは3.10.3、pyinstallerは5.13.2で仮想環境を作ってexe化を行い、onefile化せずに動きました!

今回は、csvファイルの読み込みを行いたかったのです。

最初は最新のpyinstallerでやって、onefile化されたのでcsvファイルが読み込めなかったので、うまく動かなかったのだと推測しています。

1Like

すぐ窓が閉じるのはコンソールアプリの仕様なので,exeをダブルクリックで使いたいならpauseなり何なり挟む必要があります.(CLIとしてお行儀は良くないので推奨しません)

0Like

pythonのスクリプトで処理が終わった後に input() をつけて入力待ちの状態にするか、

my_program
pause

みたいなバッチファイルを一緒に配布して、こちらをダブルクリックで使ってもらうかですかね。

0Like

ビルドの歳に--consoleを足したらどうなりますか?

pyinstaller --console my_program.py

0Like

Your answer might help someone💌