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

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

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

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Python

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

Q&A

解決済

3回答

12871閲覧

PythonをWindows用exe化し、実行でエラーになる

退会済みユーザー

退会済みユーザー

総合スコア0

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Python

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

0グッド

0クリップ

投稿2019/08/27 11:07

前提・実現したいこと

Python3.7で作ったモジュールをWindows上の実行file(exe)にして、Windowsのコマンドプロンプトで動作できるようにしたい。

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

exe化はできたのですが、Windowsのコマンドプロンプトで実行すると下記のエラーメッセージが出ます。 --- Traceback (most recent call last): File "site-packages\tensorflow\python\autograph\pyct\parser.py", line 53, in parse_entity File "site-packages\tensorflow\python\autograph\pyct\inspect_utils.py", line 124, in getimmediatesource File "inspect.py", line 786, in findsource OSError: could not get source code --- exeにする際に、importしているpython系のライブラリーなども一緒にパッケージできる方法はないでしょうか?

該当のソースコード

Python

1<Python上でexe化(Pythonモジュール:exe.py)> 2pyinstaller exe.py --onefile 3 4<コマンドプロンプト上で実行> 5exe.exe

試したこと

・Windows10にPython3.7.4をインストールして、Python上でPythonモジュール(exe.py)を実行すると、エラーも無く、正常に動作します。

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

・Windows10
・Python3.7.4

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

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

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

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

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

meg_

2019/08/27 11:19

どうやってexe化したのか具体的に教えてください。
meg_

2019/08/27 11:24

すいません。書いてありましたね。 ・スクリプトの内容はどんな物ですか? ・今までは無事にexe化出来ていましたか?
退会済みユーザー

退会済みユーザー

2019/08/27 11:37

・スクリプトの内容は t2t_decoder.py を利用して翻訳をさせています。 ・今回がexe化初めてなので、困ってます。
guest

回答3

0

ベストアンサー

PyInstaller について検索してみましたが、デフォルトで、参照する全てのライブラリをパッケージに含めると言うことでした。
TensorFlow は、初期の頃に少し触っただけなのですが、インストールの時にコンパイルしないでしょうか。コンパイルするなら、ソースコードとライブラリファイルがあります。ライブラリファイルだけをパッケージに含めていると思われます。エラーが出ている inspect.findsource は、引数で指定したオブジェクトのソースコードを返す関数です。コンパイル後のものしかないなら、「ソースコードを得られない」というエラーは納得できます。
ただ、TensorFlow の該当箇所のコードを見ると、OSErrorValueError に変換されていました。ちょっと不思議な動作です。
逆に、TensorFlow をパッケージに含めないようにすると、解決するかもしれません。

ところで、PyInstaller を使用する同機はなんでしょうか。
もし、実行速度の向上が目的なら、これは適しません。ちょっと調べればわかることですが、これは「自己解凍書庫」を作っています。実行時に解凍し、実行終了後に消しています。よって、実行速度は Python のまま実行するのと変わらないし、起動するまでに解凍する分、時間がかかります。
ということは、実行の最初でキー入力待ちにして終わらないようにし、解凍場所を調べれば、何がパッケージ化されていて、何が足りないかわかる、ということでもあります。

投稿2019/08/28 12:52

Q71

総合スコア995

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

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

退会済みユーザー

退会済みユーザー

2019/08/28 13:15

回答ありがとうございます。 すいません、初心者のためよくわからないため質問させてください。 「TensorFlow をパッケージに含めない」とはimportしない他は、どのように指定すれば良いでしょうか? また、「TensorFlow のインストールの時にコンパイルしているか」は、「pip install ...」でインストールの時にって事ですよね? 初めて入れたのでよく覚えてないのですが、恐らくお察しの通りと思います。 PyInstallerを使用するきっかけは、 pythonライブラリー系を簡単にまとめてexe化できると記載さてれていたためです。さらにPyInstallerの方が色んなページで書き方も書いてありますので。 今は速度よりWindows上で動く事が優先です。 それでは、お返事をお待ちしております。
Q71

2019/08/29 00:12

pip でインストールしたなら pip freeze でインストールしたモジュールの一覧が出ます。この結果をファイルにリダイレクトしておけば、他の環境でも復元(再インストール)ができます。 「簡単にまとめてexe化する」のは何故か?を尋ねたのですが。 マニュアルを置いてくださっている方がいらっしゃいますが、目を通してみましたか?
退会済みユーザー

退会済みユーザー

2019/08/29 04:12

返信ありがとうございます。 私の回答が変でした。すみません。 「簡単にまとめてexe化する」の件、python環境が無くてもWindows上で動作できる物を作りたいからです。 マニュアルは、さらっと見させていただきました。 よくわからない点もありますが...
Q71

2019/08/29 05:17

> python環境が無くてもWindows上で動作できる であるなら、自己解凍書庫の様なものなので不適切です。
退会済みユーザー

退会済みユーザー

2019/08/29 06:07

返信ありがとうございます。 何か良い方法はあるでしょうか?
退会済みユーザー

退会済みユーザー

2019/08/29 07:34

返信ありがとうございます。 Py2exe を勉強してみます。
kotai2001

2020/08/21 08:34

Py2exeがPython3.7に対応していますかね。
guest

0

とりあえずマニュアルを置いておくとUsing Spec Files

最初は、--onefileを使わない方がどのファイルがexeに含まれるか分かりやすい気がします。

投稿2019/08/27 13:14

asm

総合スコア15147

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

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

退会済みユーザー

退会済みユーザー

2019/08/28 00:22

回答ありがとうございます。--onefile を使わないで実行してみたら、同じエラーでした。 という事は、exe.pyからimportしているA.pyやB.pyなどは、exeに含まれてなかった可能性が高いですよね? その場合「.spec」を修正してA.pyやB.pyを指定すべきでしょうか? その箇所は「a.pure」に追加するのでしょうか? すいません、Python自体もよくわかってないので、色々質問しています。
退会済みユーザー

退会済みユーザー

2019/08/28 00:36

すいません、質問が前後してしまうのですが、「ファイルがexeに含まれるか分かりやすい」合というのは、「pyinstaller exe.py」を実行した際にコマンドプロンプトに表示される物で判断できるという事でしょうか? それともexeの中身を何かで見れるのでしょうか?
退会済みユーザー

退会済みユーザー

2019/08/28 12:42

先程質問した「ファイルがexeに含まれるか分かりやすい」の見方が分かりました! --onefile を使わないで実行すると、\distの中にもう1つフォルダーが作られて、そこにモジュール系が格納されるので、そこのfileを見るという事ですね。
guest

0

exe化する際には32bitか64bitか選択する必要があると思いますが、お使いのOSに合った設定にされていますか?
pythonをexe化

投稿2019/08/27 11:29

gnbrganchan

総合スコア438

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

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

退会済みユーザー

退会済みユーザー

2019/08/27 11:58

回答ありがとうございます。 使用しているPCはwin10、64bitです。 pythonも64bit用を入れています。 また、exeを実行したPCも同じでwin10、64bitです。 win上のpython上でもモジュールの実行した際に、足りないモジュールの時は、足りないよとエラーでるので、「pip install 」を使用して、インストールしており、現在ではpython上のモジュールの実行は正常に動作しているため、モジュールは足りていると思っています。 python上のモジュールの実行は正常なのに、exeの実行でエラーとなっているので、pythonの一部がexeに取り込まれてないとは思うのですが、その方法がわからないのです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問