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
ファイルが生成されたことを確認しました。ただし、実行しようとすると、空のコンソールウィンドウしか表示されません。何も表示されず、プログラムが終了することはありません。私が強制的に閉じるまで、それは永遠にそこに留まります。
pyinstaller test.py
の呼び出し(--onefile
オプションなし)は正常に機能します。それで、問題は何ですか?
py2exe
またはcx_freeze
の使用はオプションではないことに注意してください。 pyinstaller
である必要があります。
UPDATE:Python 2(通常のPyInstallerバージョンを使用)でテストしたところ、同じ問題が発生しましたしたがって、これは単なるPython 3の問題ではありません。
私はなんとかこの問題を解決しました。
プログラムが実際に実行されたことがわかりました。ただし、Hello, World!
メッセージが表示される前に、長時間(5分間!)ハングしました。
実際、問題の原因は [〜#〜] upx [〜#〜] (実行可能ファイル用のUltimate Packer)であり、実行可能ファイルのサイズを小さくすることを目的としています。 PyInstallerは、システムで検出した場合、デフォルトでUPXを使用します。まだ理解できない理由により、UPXで圧縮された実行可能ファイルは、自己解凍して実行するのに非常に長い時間がかかりました。
したがって、--noupx
オプションを指定してコマンドを実行するだけで問題が解決しました。
pyinstaller --debug --onefile --noupx test.py
詳細については、 GitHubの問題 をご覧ください。