質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PyInstaller

PyInstallerは、Pythonのスクリプトを一括でWindowsなどで動く実行可能ファイルに変換できるツールです。このツールを用いることで自作のPythonプログラムを別で使用する場合でもPythonをインストールする必要がありません。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

13800閲覧

Pyinstallerで作成したexeファイルが実行できない

netz-eng

総合スコア105

PyInstaller

PyInstallerは、Pythonのスクリプトを一括でWindowsなどで動く実行可能ファイルに変換できるツールです。このツールを用いることで自作のPythonプログラムを別で使用する場合でもPythonをインストールする必要がありません。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

2クリップ

投稿2020/06/24 07:10

PyInstallerで作成したexeファイルが実行できない

「test.py」というファイルを実行ファイル化するに当たって、PyInstallerを用いました。
しかし、「dist」フォルダに当該の「test.exe」ファイルは作成されるものの、開こうとすると以下のようなエラーメッセージが出て、コードを実行できませんでした。

ファイルの内容は、PySimpleGUIライブラリを用いたGUIを表示するコードです。
中身を直接打ち込んだ際には、エラーなく動かせました。

発生している問題・エラーメッセージ

Failed to execute script test

試したこと

このほか、「Hello, World!」を表示するだけのものをはじめ、幾つかの.pyファイルをPyInstallerで.exe化しようと試みましたが、結果は全て同じでした。
ネットで検索したところ同じような症状の方はおられるようですが、効果的な解決策は示されていないようです。
どなたか詳しい方、解決策の提案をしていただければ助かります。

解決は、PyInstallerによる実行ファイル化の成功、もしくは別の方法によるPythonコードの実行ファイル化の実現とさせていただきます。

補足情報(FW/ツールのバージョンなど)

Python 3.7.4
PyInstaller 3.6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jeanbiego

2020/06/24 07:30

エラーメッセージは他に何が出ていましたか。
netz-eng

2020/06/24 07:52

ご覧いただきありがとうございます。 エラーメッセージは、上記のもののみでした。 同じ内容を打ち込んだコマンドプロンプト上ではエラーはなく、正常に動いていました。 PyInstallerで実行ファイル化したものを開こうとすると、上記のエラーメッセージが出てファイルを開くことができなかった、という状況です。 何か心当たりがあれば、是非お教えください。
yymmt

2020/06/24 09:49

pyinstaller実行時に長々とメッセージが出ていたかと思いますが、正常に終了しましたか?
otn

2020/06/24 10:12

> 中身を直接打ち込んだ際には、エラーなく動かせました。 この意味が不明です。 コマンドプロンプトから、python "test.pyのフルパス" と打って、実行できますか?
netz-eng

2020/06/24 12:21

> yymmtさん ご覧いただきありがとうございます 現在手元に開発環境がないため正確なことは申し上げられませんが、目立ったエラーはなかったように思います
netz-eng

2020/06/24 12:31

> otnさん ご覧いただきありがとうございます ご指摘の部分に関しては、コマンドプロンプト画面にtest.pyの中身のコードを直接打ち込んだときは、問題なく実行できた、という旨です ご提案の件ですが、現在手元に開発環境がなく、確認が明後日になってしまうのですが、確認次第ご返信させていただきます ただ、以下の2点は確認が取れています ・他のコードが書かれた.pyファイルにおいて「python .pyのフルパス」で問題なく実行を確認できた ・PyInstallerで.exe化した全てのファイルで同じエラーが出ている
KohnoseLami

2020/06/24 14:34 編集

pyinstallerの際に--noconsoleをオプションとして付与していますか? もし付与していたらそれを外して実行してみてもらえませんか? 私も--onefile --noconsoleで作成したりして実行できなくて--noconsoleを外したところ実行できましたので試してみてください。
netz-eng

2020/06/25 15:21

> KohnoseLamiさん ご覧いただきありがとうございます --noconsole は付与した場合、外した場合両方試しましたが、結果は同じでした
netz-eng

2020/06/26 02:11

> otnさん 試すのが遅くなり、申し訳ありません コマンドプロンプトから、「python "test.pyのフルパス"」と打ち、問題なく実行できました
guest

回答1

0

ベストアンサー

過去に私が参照させていただいたページは下記です。
pyinstallerの*.specファイル作成法。

MaCOSアプリを作られていますが、Winでも同様に処理できたと思います。

またpython、PyInstallerそれぞれのバージョン、組合せによっては動作しない可能性はあります。

投稿2020/06/25 01:39

mdj

総合スコア220

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

netz-eng

2020/06/25 15:27

ご回答ありがとうございます 拝見しましたが、複雑そうですね^^; 初心者の自分には、かなりちんぷんかんぷんです ただ、.specファイルはPyInstallerを実行した際、元の.pyファイルと同じフォルダ内に作成されていたため、解決策とはずれているかな? と感じます バージョンの組み合わせに関しては、その場合もうどうしようもないですよね……
mdj

2020/06/25 23:29 編集

.specファイルは.pyファイルと同じフォルダに作られるもののことです。 URL先はライブラリ、アイコンなどを同梱する際の手順としてspecをPyInstallerで処理する内容です。PySimpleGUIのライブラリを使用されているとのことでしたので、specにそれを追加する記述が必要になるとおもいます。 URL先では「Main.pyは ”/Users/.../ProgramNameDir”に存在し、その下の "./lib"のlibファイルを参考しています。なので *.specファイルが"./lib"を認識できるように少し修正します。」と書かれているあたりが該当します。 この編集後に pyinstaller ○○.spec を処理するとdistにexeが出来るはずです。
netz-eng

2020/06/26 02:27

はあー、なるほど! そういった作業が必要になるんですね さっそくURL先を試してみましたが、.specファイルに./libを認識させる修正コード10行目の「Analysis」で、「name 'Analysis' is not defined」のエラーが出てしまいました???? 本題とは異なるつまずき方で恐縮ですが、こちらについてもご教示いただけると幸いです……
mdj

2020/06/26 03:00

何をしたら、どこで、そのエラーがでたのでしょうか? pyinstallerでpyを処理した際に生成されたspecファイルをテキストエディタなどで編集し、pyinstaller ○○.spec で実行する(exeを生成する)ことになる想定です。
netz-eng

2020/06/26 06:56

ようやく仰っている意味が分かりました! 参照URLの通り.specファイルの中身を書き換えてコマンドプロンプト上で「pyinstaller test.spec」を打ち込んでみたところ、「dist」フォルダ内に「test」フォルダが生成され、その中に「text.exe」ができていました! しかし「text.exe」を実行してみると、一瞬コマンドプロンプトが開いたあとすぐに閉じてしまいました これはどうすればよいのでしょうか……?
netz-eng

2020/07/01 06:00

別のコードが書かれた.pyファイルで試してみたところ、うまくいきました! ①上記の方法で.specファイルを編集したのち pyinstaller test.spec で実行、.exeファイルを作る ②コマンドプロンプト上で \dist\test.exe で実行し、エラー確認 この繰り返しでうまくいきました 私が「コマンドプロンプトがすぐ閉じてしまう」と言っていたのは、実行したらすぐに終了してしまうようなコードの書き方が原因っだったのかもしれません .specファイルから.exeファイルを作る際は --onefile が使えないのが少し残念なところではあります…… が、ずっと悩んでいたので本当に助かりました! ありがとうございます
mdj

2020/07/01 08:11

うまくいったようで何よりです。 --onefileも使えたような気がするのですが、現在処理環境が無いので確認できていません。 (stackoverflowでも同様のことが書かれているので、使えない事象はあるようですね。) ちなみにexe(を含むフォルダごと。ないしはdistごと)が別PCで動作するかはご確認されていますでしょうか。 ご確認済でしたらごめんなさい。 別PCで動作しない場合は「ライブラリファイル参照の記述」「_MEIPASSの記述」あたりが正しく記述されていない可能性があります(動作しない場合、そのexeはビルドしたPC内のライブラリを参照していると思われます)。 この辺りが解決していないために --onefile が動作しないかもしれない、という推察です。
netz-eng

2020/07/10 04:28

ご返信ありがとうございます 気づくのが遅れてしまいました 作成した.exeファイルを別PCでも試してみたところ、無事動作を確認できました! もし次回、ご指摘のような事象が発生したときは、この回答を思い出して頑張ってみようと思います アフターケアまで丁寧に教えてくださって、本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問