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

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

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

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

PyInstaller

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

JupyterLab

JupyterLabは、Jupyter notebookの後継の対話型開発環境(IDE)です。データの可視化がインタラクティブで、プラグイン作成により新しいコンポーネントの追加および既存のコンポーネントも統合可能。サーバに閉じているため、データ分析に向いています。

Firefox

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

Python

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

Q&A

解決済

4回答

1287閲覧

jupyterlabで作成したExeファイルを開いたときコマンドプロンプトがすぐ出て消えてしまうはなぜでしょうか?(コード上はウィンドウが閉じない命令をしています。)

kumao

総合スコア6

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

PyInstaller

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

JupyterLab

JupyterLabは、Jupyter notebookの後継の対話型開発環境(IDE)です。データの可視化がインタラクティブで、プラグイン作成により新しいコンポーネントの追加および既存のコンポーネントも統合可能。サーバに閉じているため、データ分析に向いています。

Firefox

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

Python

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

0グッド

0クリップ

投稿2022/08/27 03:59

編集2022/08/29 15:04

前提

jupyterlab上で、PysimpleGuiを使用して作成したアプリをPyinstallerでexeファイル化しました。
そのexeファイルをダブルクリックして開くと一瞬コマンドプロンプトが開いてすぐ消えてしまいます。
作成したexeファイルをうまく実行させる方法を知りたいです。

実現したいこと

jupyterlabで作成したアプリをexeファイルで出力して周りに配布できるようにしたい。

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

エラーメッセージ

該当のソースコード

from datetime import date
import time

today = date.today()
print(f"今日の日付:{today}")

time.sleep(20)

python ※PysimpleGUiを使ったコードは載せられなかったので、確認用のコードを代わりに載せています。 これでも同じように開けなかったです。

試したこと

①ファイルの拡張子の名前を直接書き替え:ファイル名.ipynb→ファイル名.py
②コマンドプロンプトの記入を大文字に変更:pyinstaller ファイル名.py →PyInstaller ファイル名.py
③jupyterlab上で保存方法を変える(file>save and export notebook as>executive script)
→505内部サーバーエラー
エラーは次の通りです。”nbconvert が失敗しました: 'tuple' オブジェクトは呼び出し可能ではありません ”
調べたけどよくわかりませんでした。
④コード内に処理を止める命令を入れた:sleep(20)かinput("")をコードの一番下に入れた。
⑤pyinstallerのアップグレード(python3.6までしかサポートしてない?):pip install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz
⑥youtubeでPysimpleGUIを使用している解説動画(成功例)があったので、それと同じコードを作ってやってみた。私の環境ではうまくいかない。(動画上は、jupyterlabではない何かで、ファイルの拡張子は.pyだった)
⑦別のPC(windows)で個人作成した別の似たコードを試した:こちらも同じく消えてだめだった。
⑧エクスプローラー上のファイルをダブルクリックして開くのではなく、コマンドプロンプト上で、ファイル名を入力して実行した。だめでした。

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

windows10
python3.8
firefox

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

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

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

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

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

y_waiwai

2022/08/27 05:07 編集

EXEファイルが消えてしまうということかな? 実行ファイルが消えてなくなる??
kumao

2022/08/27 06:27 編集

コメントありがとうございます。 EXEファイルはPC内に生成されて残っています。 ファイルが消えるのではなく、ファイルが使えない(中身が確認できない?)という状況です。 コマンドプロンプトが一瞬開いて消えてる?ような意味で消えてるという書き方をしてしまいました。紛らわしくてすみません。 何から調べていいのかも、個人では行き詰まってしまい、ヒントだけでも教えていただけるとありがたいです
TakaiY

2022/08/27 12:42

該当のソースコードにあるコードはPysimpleGuiを使っていませんが、どういうことでしょう。
meg_

2022/08/27 13:28

exe化する前のPythonプログラムは正しく動作するのですよね?
kumao

2022/08/27 14:01

ご質問ありがとうございます。 ここに表示してあるコードは、エラー調査のために、個人PCでPysimpleGUIを使わず簡易的に作ったものです。 PysimpleGuiを使用した元のコードは、実は仕事関係のものでここに表示することができませんでした。 exeファイルが開けないという症状は同じで、PysimpleGUIに関係なくご回答いただけたら幸いです。 PysimpleGUIは、私の個人の事情まで話してしまって皆様には関係なかったかもしれません。すみません。
kumao

2022/08/27 14:12 編集

exeファイル化する前のpythonのプログラムではエラーはでなかったです。 元々のコードは、入力欄に記入した数値を計算して、結果を表示するものです。 jupyter lab上で実行すると、ウインドウが表示されて「閉じるボタン」を押すまで残る感じです。 しいて言えば関係ないメモみたいなものが後ろにあったかもしれないです。 とりあえず今回は、ここに記載の日付表示のコードがちゃんと開けないのをどうしたらよいかコメントいただけたら嬉しいです。 いろいろ試して、余計なことまでやっているのかもしれないです。 何から見たらよいのでしょう?
TakaiY

2022/08/27 14:34

これでは質問が支離滅裂です。 すでに回答が付いてしまっているので、質問を編集するのもおかしなことになると思うので、この質問は解決済みにして、「ここに記載の日付表示のコードがちゃんと開けない」 についての質問を新たに立てたらいいのでは。 それにあたっては、まず「ここに記載の日付表示のコード」を、pythonから(jupyter notebookでなく)起動して動作することを確認し、pyinstallerでexe化し、コマンドプロンプトから実行してみるのがいいかと。 それで、動かないようであればここで質問しましょう。
kumao

2022/08/27 14:44

そうなのですね。勝手がわからずすみませんでした。 記載の方法で試してみてからまたご連絡差し上げます。 ありがとうございます。
meg_

2022/08/27 14:53

> jupyter lab上で実行すると pyファイルとしてエラーなく実行できていますか?
kumao

2022/08/27 15:15 編集

jupyterlabで作成したファイルは.ipynbファイルとして保存しています。 .pyと同じものと考えてよいと、検索してきたら出てきたのですが今回のケースでは違かったでしょうか? ipynbのファイル名を直接いじって.pyに修正はできたのですが、 jupyterlabの機能で正規の方法?で保存しようとすると、試したこと③のようになってうまく保存できなかったです。 ファイル名をいじって作成したpyファイルは、コマンドプロンプト上でエラーが表示されました。 下に書いていたのと同じような文面です。 ーーーーーーーーーーーーーーーーーーー Traceback (most recent call last): File "xxx.ipynb", line 52, in <module> "execution_count": null, NameError: name 'null' is not defined [16772] Failed to execute script 'xxx' due to unhandled exception! ーーーーーーーーーーーーーーーー
TakaiY

2022/08/27 15:14

ipynbのファイルのファイル名をpyに変更してもpyファイルとしては使えません。 該当のソースコードとして提示されているものは、pythonファイルとして正常(ipynbとしては不正)なので、これをコマンドラインからpythonファイルとして実行してみてください。
kumao

2022/08/28 01:32

おかげさまで無事exeファイルを起動することできました。皆様ご回答いただきありがとうございました。 やり方としては、jupyterlabで作成したコード(上記コード)をメモ帳にそのまま張り付けて、"ファイル名.py"の形式で保存しました。 その後コマンドプロンプトを開いてで"pyinstaller ファイル名.py --onefile"で、Exeファイルしたら、今回の開けなかった問題が解決しました。 ただおそらく正しいやり方をするならば、試したこと③のようにjupyterlabの機能で保存(file>save and export notebook as>executive script)」するのがいいと思うのですが、同じく③に記載のエラーが出て しまって、保存ができませんでした。メモ帳記載ではうまくいくのにこちらがうまくいかないのは、少し不安です。 jupyter_serverはアップデートしていない1.13.2のままでしたが大丈夫でした。
jbpb0

2022/08/28 01:40 編集

> jupyter_serverはアップデートしていない1.13.2のまま が > 同じく③に記載のエラーが出てしまって、保存ができませんでした。 の原因なので、1.13.4かそれ以降にアップデートしたら③のエラーが出なくなって、 「file>save and export notebook as>executive script」 ができるようになると思いますよ https://github.com/jupyterlab/jupyterlab/issues/11885 に、同じエラーが https://github.com/jupyter-server/jupyter_server/pull/667 の修正で直ったと書かれてて、 https://github.com/jupyter-server/jupyter_server/blob/v1.13.4/CHANGELOG.md に、その修正が「1.13.4」で入ったと書かれてますので
TakaiY

2022/08/28 01:48

jupyterlabはpythonを使ってデータ解析などをするためのシステムなので、単独で動作するプログラムを作成するのに向いていません。 いわゆる、アプリとか ソフトとか呼ばれるようなプログラムを作るのであれば、Visualu Studio Code(VSCode)やPyCharmなどのツールを使うのが適しています。
TakaiY

2022/08/28 01:53

jupyterlabからpyファイルをexportする方法も、動かなければVSCodeなどで開いて内容を確認して修正すればいいだけなのですが、それができなくて悩むくらいなら、使うべきではないと思います。
kumao

2022/08/28 02:23

>jbpb0さん そうだったのですね。pyファイル変換はバージョンアップすればうまくいくということですね。 URLの中身を読みましたが、すみませんが私には何が変わったのかちんぷんかんぷんです。補足の説明いただきありがとうございます。 >TakaiYさん この度はとても勉強になりました。ありがとうございます。私も調べてみましたが、jupyterlabは専用の機能(markdownなど)があってpyファイルでは読み込めないみたいなことと書いてました。 データ分析するときなどは使えそうですが、アプリのような単独だとだめということですね。 上達するまでは私にできる方法で使い分けていこうと思います。
jbpb0

2022/08/28 04:41 編集

今更ですが、質問の題名の 「Exeファイルが消えてしまう」 は、変えた方がいいですよ 実際に起きてることは、 「Exeファイル」が「消えてしまう」 のではないのに、非常に誤解されやすい表現だと思うので 「前提」の 「作成したexeファイルが消えない方法」 も同様です 「前提」の 「一瞬コマンドプロンプトが開いてすぐ消えてしまいます。」 が実際起きてることなので、そのような表現に書き換えることをお勧めします
guest

回答4

0

ベストアンサー

③jupyterlab上で保存方法を変える(file>save and export notebook as>executive script)
→505内部サーバーエラー
エラーは次の通りです。”nbconvert が失敗しました: 'tuple' オブジェクトは呼び出し可能ではありません ”

 

cmd

1pip list

を実行して「jupyter_server」のバージョンを確認して、もし「1.13.4」よりも古かったら、アップデートしたら直ると思います

Exporting notebook using Save and Export Notebook As raises "tuple" object is not callable from anyio #11885
に、同じエラーが
Fix nbconvert handler run_sync() #667
の修正で直ったと書かれてて、
Changelog
に、その修正が「1.13.4」で入ったと書かれてますので

投稿2022/08/28 01:53

jbpb0

総合スコア7651

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

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

kumao

2022/08/28 02:34

ありがとうございます!この方法で解決しました!
guest

0

ipynbのファイル名を直接いじって.pyに修正はできたのですが、

そのようなことをしてはいけません。
ipynbファイルはJupyterのFile - Save and Export Notebook As... で Executable Script を選択してpyファイルへ変換することが可能です。ただそのpyファイルには「# In[1]:」などのpyファイルとして不要な情報が含まれてしまいますので削除した方が良いでしょう。(コメントアウトされているのでそのままでも実行には問題ありません)

exe化する前提での開発は最初からpyファイルで書いた方が良いかと思います。様々便利なIDEやエディターもありますので試してご自身が使いやすいものを見つけてください。

投稿2022/08/27 16:30

meg_

総合スコア10577

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

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

kumao

2022/08/28 01:42

ご回答ありがとうございます。 pyファイルに変換するときに次はきちんと整理しようと思うのですが、不要な情報というのは、どのように見分けられるのでしょうか? exe化を前提した場合の環境もあるのですね。参考になりました。
meg_

2022/08/28 02:28

実際に何か一つ変換してみると良いかと思います。回答にも記載いたしましたが「# In[1]:」などのJupyterでのセル番号です。
guest

0

<今回問題だったこと>
①ipynbファイルをそのまま使用していたこと(私の問題)
②jupyterserver1.13.2を使用していたこと(システムの問題)

<解決方法>
・jupyterlabで作成したコードをメモ帳にコピーで張り付けてpyファイル形式で保存する。
または
・jupyter-server1.13.4にアップデートして、pyファイルに変換する。(file>save and export notebook as>executive script)

投稿2022/08/28 02:50

kumao

総合スコア6

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

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

0

たんにあなたのコードがエラーで終了してしまってるだけでしょう
コマンドプロンプト上で、そのファイルを実行してみよう

投稿2022/08/27 06:38

y_waiwai

総合スコア87719

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

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

kumao

2022/08/27 13:53 編集

ご回答ありがとうございます。 作成したexeファイルをコマンドプロンプト上で開いたら、このようなエラーが表示されました。 exeファイルを作る前のjupyterlab上では、特に問題なかったのですが、どう解釈したらよいでしょうか? ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー C:\Users\user>C:\Users\user\dist\xxx.exe Traceback (most recent call last): File "xxx.ipynb", line 52, in <module> "execution_count": null, NameError: name 'null' is not defined [16772] Failed to execute script 'xxx' due to unhandled exception! ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
y_waiwai

2022/08/27 22:53

あなたのコードはjupyterlab上でしか実行できないようなコードなんでしょう。 コードの各所で変数の値を出すようなログを仕込んで、どこがおかしいのかデバックしていきましょう
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問