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

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

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

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python 3.x

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

Q&A

解決済

1回答

1531閲覧

FlaskがIDLEでうまく動作しません

退会済みユーザー

退会済みユーザー

総合スコア0

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python 3.x

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

0グッド

1クリップ

投稿2022/04/30 14:52

編集2022/05/15 15:46

内容

IDLEにて以下のFlaskのプログラムが正常に動作しません。
ちなみに以前は正常に動いていました。

Python

1from flask import Flask 2app = Flask(__name__) 3@app.route('/') 4def root(): 5 return 'test' 6if __name__ == '__main__': 7 app.run(debug=True, host='0.0.0.0', port=8080)

IDLEで実行すると以下のように表示されて、すぐに終了してしまいます。

IDLE_Shell

1 * Serving Flask app 'test' (lazy loading) 2 * Environment: production 3 WARNING: This is a development server. Do not use it in a production deployment. 4 Use a production WSGI server instead. 5 * Debug mode: on 6 * Restarting with stat

Python3.9のIDLEでは、

IDLE_Shell

1 * Serving Flask app 'test' (lazy loading) 2 * Environment: production 3 WARNING: This is a development server. Do not use it in a production deployment. 4 Use a production WSGI server instead. 5 * Debug mode: on 6 * Running on all addresses (0.0.0.0) 7 WARNING: This is a development server. Do not use it in a production deployment. 8 * Running on http://127.0.0.1:8080 9 * Running on http://192.168.10.123:8080 (Press CTRL+C to quit) 10 * Restarting with stat

のように正常に動作。

追加

コマンドプロンプトで実行すると以下のようになります。

C:\WINDOWS\system32>python Python 3.10.2 (tags/v3.10.2:a58ebcc, Jan 17 2022, 14:12:15) [MSC v.1929 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> from flask import Flask >>> app = Flask(__name__) >>> @app.route('/') ... def root(): ... return 'a' ... >>> app.run(debug=True, host='0.0.0.0', port=8080) * Serving Flask app '__main__' (lazy loading) * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: on * Restarting with stat C:\Program Files\Python310\python.exe: can't find '__main__' module in 'C:\\WINDOWS\\system32' C:\WINDOWS\system32>

環境

  • Windows10 21H2
  • Python 3.10.2 => Python 3.10.4 Pythonを再インストールしました。
  • Flask 2.1.2
  • pip 21.2.4

試したこと

  • 色々なサイトに記載されているコードの実行
  • Flaskのアンインストール・インストール
  • Pythonの再インストール

再インストールする際に

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. sacremoses 0.0.47 requires joblib, which is not installed.

と出てきました。

  • ポート番号の変更
  • app.run()の括弧内を空にしたらうまく動作しました。しかし、指定したポート番号で動作させたいです。

以下の御回答をもとに、いろいろ試してわかったこと

  • Pyinstaller用にインストールしたあったPython3.9では正常に動作しました。
  • debug=Trueを削除したら正常に動作しました。

結局debug=Trueを消して動かすことにしました。

コードの不具合などございましたらお願いします。
御回答宜しくお願い致します。

皆さん御回答有難うございました。
他にも解決策がありましたら詳しく教えていただけると嬉しいです。

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

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

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

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

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

Bull

2022/05/01 04:28

当方の環境 (Windows10, Python 3.10.4, Flask 2.1.2) では問題なく実行できますので、ソースコードに間違いはないように思います。 IDLE ではなくコマンドプロンプトでもすぐに終了してしまいますか? また、なにかエラーメッセージは出ていますか?
退会済みユーザー

退会済みユーザー

2022/05/01 06:41

返信有難うございます。 コマンドプロンプトでの実行結果を内容に追加しておきましたので、ご確認いただけると幸いです。 宜しくお願い致します。
Bull

2022/05/01 08:32

インターラクティブシェルで実行する必要があるのですか? インターラクティブシェルで実行するのではなく、例えば "Test.py" などというソースファイルを作成して、それを実行すればいいかと思います。
退会済みユーザー

退会済みユーザー

2022/05/01 14:11

返信有難うございます。 コマンドプロンプトにて「python test.py」のように実行したところうまくいきませんでしたが、 ファイルを移動して同じように実行したら何故かうまくいきました。 有難うございました。
guest

回答1

0

ベストアンサー

IDLE使った事ないのですが、対話コンソールみたいなもんですよね?

カレントをソースがある場所に移動して、以下で実行できませんか?

from app import app app.run(host="0.0.0.0", port=8080)

というか、対話モードで `if name == 'main' が見つけられなかったので、普通に実行した方が良いと思います。
Flask使う場合対話モードって殆ど使いませんし。(DB作る時くらいしか使う記憶が無いです・・・。)

2022/05/01 追記

そこまで詳しく書いて欲しいなら、それも質問文に書いて欲しいです。

以下に手順を記載します。
この手順は、仮想環境を作成して、それを使う手順です。(vnevのところ)

  1. プログラムを動作させるためのフォルダを作成します。
    日本語が入る場所に作成しないでください。
    作成するなら例えば、「C:\works\myprogram」のようなフォルダにしてください。

  2. 1で作成したフォルダに、pythonの実行ファイルを置きます。
    app.pyというファイルを作成した場合で、「1」のフォルダを作成した場合は以下の通りになるようにします。
    c:\works\myprogram\app.py
    念のためですが、app.pyには以下を記載します。

    python

    1from flask import Flask 2 3app = Flask(__name__) 4 5 6@app.route('/') 7def root(): 8 return 'test' 9 10 11if __name__ == '__main__': 12 app.run(debug=True, host='0.0.0.0', port=8080)
  3. コマンドプロンプトを起動します。

  4. コマンドプロンプロのカレントディレクトリを、「1」で作成したフォルダに移動します。
    「C:\works\myprogram\」を作成した場合は、cd C:\works\myprogram
    上記を実行すると、コマンドプロンプト左の表示がc:\works\myprogram>となります。

  5. 以下を実行し、仮想環境を作成します。
    パスが通っている場合:python.exe -m venv venv
    パスが通っていない場合:Pythonをインストールしたフォルダ\python.exe -m venv venv

    Pythonをインストールしたフォルダが思い出せない場合は、以下あたりを見て探して下さい。
    https://gammasoft.jp/blog/python-install-location/

  6. 以下を実行し、仮想環境を実行します。
    venv\Scripts\activate

    上記を実行すると、コマンドプロンプトの左側が以下のようになります。
    (venv) c:\works\myprogram

  7. 以下を実行してパッケージをインストールします。
    pip install flask

  8. 以下を実行してプログラムを実行します。
    python app.py

    上記を実行すると、以下のような文が表示されるはずです。

    shell

    1# --略 2 * Running on http://127.0.0.1:8080 3 * Running on http://{IP ADDRESS}:8080 (Press CTRL+C to quit) 4# --略
  9. インターネットブラウザ(EdgeとかChromeとかFireFoxとか)を起動し、以下を入力してアクセスします。
    http://localhost:5000

    ブラウザに[test]と表示されれば成功です。

さらに念のためですが、app.pyなどのプログラムのソースコードを作成する場合はテキストエディタを使用してください。
テキストエディタとは、メモ帳(notepad.exe)やVSCode、さくらエディタ、秀丸エディタなどのことです。
Wordやワードパットは使用しないで下さい。

投稿2022/05/01 02:19

編集2022/05/01 10:12
FiroProchainezo

総合スコア2401

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

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

退会済みユーザー

退会済みユーザー

2022/05/01 06:51

返信有難うございます。 すいません。 まだ初心者で少し理解が出来ないので具体的にコマンドプロンプトでこのように入力してください、のように教えてくれませんか? お願い致します。
退会済みユーザー

退会済みユーザー

2022/05/01 14:07

非常に詳しく分かりやすく書いていただきありがとうございます。 教えていただいたとおりに実行したらうまく動作しました。 「venv」というもので仮想環境が作れることも勉強になりました。 今まで通りにIDLEで動かせないことに疑問は残りますがとりあえずはこの方法で使っていこうと思います。 有難うございました。
FiroProchainezo

2022/05/02 11:23

app.run()に[debug=True]の記載があると「can't find '__main__' module in」のエラーが発生するようです。 debug=Trueにすると自動でリロードしてくれるようになりますが、リロードする対象(__main__)が無いって怒られてるんじゃないですかね。 対話モードは使わず、PyCharm等のデバッガでデバッグする方が楽なのでそっちをおすすめします。
退会済みユーザー

退会済みユーザー

2022/05/04 17:15

返信ありがとうございます。 遅れてしまいすみませんでした。 詳しく説明していただきありがとうございます。 実際に試してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問