最近のバージョンの pyinstaller をオプション付きで使用して--onefile
、Python スクリプトのスタンドアロン ファイルを 1 つ作成しました。私の Mac では、ターミナル (bash シェル) でファイルを開くと問題なく動作しますが、Linux bash では次のエラーが発生します。
bash: ./myprog: cannot execute binary file
私がここに欠けているものはありますか?
最近のバージョンの pyinstaller をオプション付きで使用して--onefile
、Python スクリプトのスタンドアロン ファイルを 1 つ作成しました。私の Mac では、ターミナル (bash シェル) でファイルを開くと問題なく動作しますが、Linux bash では次のエラーが発生します。
bash: ./myprog: cannot execute binary file
私がここに欠けているものはありますか?
pyinstaller
実行されているマシンで動作する実行可能ファイルを作成します。したがって、Windows で pyinstaller を実行すると、Windows 用の実行可能ファイルが作成されます。Mac、Linux などでも同じなので、Linux ボックスで pyinstaller を実行して、その環境で動作する実行可能ファイルを生成してみます。Mac 実行可能ファイルは Linux 実行可能ファイルではありません。
これは、(私が理解しているように) 基礎となる Python には、特定のもののプラットフォーム固有の実装が含まれているためです。たとえば、os
モジュールには、実行可能ファイルにバンドルされる条件付きのプラットフォーム依存のインポートが多数あります。実行中のプラットフォームで利用可能なバイナリにしかアクセスpyinstaller
できないため、他のプラットフォーム用のバージョンを作成することはできません。
Linux は実行可能ファイルのマジック ナンバーをチェックします。Linux 実行可能ファイルのマジック ナンバーは「DLE elf」で始まります
「od -c YUPUR_FILE」を実行して結果を確認