web-dev-qa-db-ja.com

PyInstaller:単一ファイルの実行可能ファイルが実行されない

Pythonアプリケーション、pyinstallerを使用して、Windows用の単一ファイルの実行可能ファイルを作成しようとしています。

私は実験的なPython pyinstallerの3つのブランチを ここ (下にスクロールしてダウンロードリンクを見つけると、ファイルは py3.Zip )。そして、python setup.py installを使用してインストールしました。更新:Python 2バージョンでも試してみましたが、同じ問題が発生しました。

次に、テストを作成しましたpython test.pyというスクリプトで、次の内容が含まれています。

print('Hello, World!')

その後、次のコマンドを実行して、単一ファイルの実行可能ファイルを作成しました。

pyinstaller --onefile test.py

コマンドは成功し、dist/test.exeファイルが生成されたことを確認しました。ただし、実行しようとすると、空のコンソールウィンドウしか表示されません。何も表示されず、プログラムが終了することはありません。私が強制的に閉じるまで、それは永遠にそこに留まります。

I get an empty console window.

pyinstaller test.pyの呼び出し(--onefileオプションなし)は正常に機能します。それで、問題は何ですか

py2exeまたはcx_freezeの使用はオプションではないことに注意してください。 pyinstallerである必要があります。

UPDATE:Python 2(通常のPyInstallerバージョンを使用)でテストしたところ、同じ問題が発生しましたしたがって、これは単なるPython 3の問題ではありません。

12
Zenadix

私はなんとかこの問題を解決しました。

プログラムが実際に実行されたことがわかりました。ただし、Hello, World!メッセージが表示される前に、長時間(5分間!)ハングしました。

実際、問題の原因は [〜#〜] upx [〜#〜] (実行可能ファイル用のUltimate Packer)であり、実行可能ファイルのサイズを小さくすることを目的としています。 PyInstallerは、システムで検出した場合、デフォルトでUPXを使用します。まだ理解できない理由により、UPXで圧縮された実行可能ファイルは、自己解凍して実行するのに非常に長い時間がかかりました。

したがって、--noupxオプションを指定してコマンドを実行するだけで問題が解決しました。

pyinstaller --debug --onefile --noupx test.py

詳細については、 GitHubの問題 をご覧ください。

16
Zenadix