回答:
エラーが発生した場合、アプリを開発モードで実行すると、ブラウザーにインタラクティブなトレースバックとコンソールが表示されます。開発モードで実行するには、FLASK_ENV=development
環境変数を設定しflask run
てからコマンドを使用FLASK_APP
します(アプリを指すことも忘れないでください)。
Linux、Mac、Linux Subsystem for Windows、Git Bash on Windowsなどの場合:
export FLASK_APP=myapp
export FLASK_ENV=development
flask run
Windows CMDの場合はset
、エクスポートの代わりに使用します。
set FLASK_ENV=development
PowerShellの場合は、次を使用します$env
。
$env:FLASK_ENV = "development"
Flask 1.0以前は、これはFLASK_DEBUG=1
代わりに環境変数によって制御されていました。
コマンドのapp.run()
代わりにメソッドを使用している場合は、デバッグモードを有効にするためflask run
に渡しdebug=True
ます。
トレースバックは、開発モードに関係なく、サーバーを実行しているターミナルにも出力されます。
PyCharmやVS Codeなどを使用している場合は、そのデバッガーを利用して、ブレークポイントでコードをステップ実行できます。実行構成は、スクリプト呼び出しをポイントするか、スクリプトをapp.run(debug=True, use_reloader=False)
ポイントしてvenv/bin/flask
、コマンドラインから行う場合と同じように使用できます。リローダーを無効のままにしておくことができますが、リロードはデバッグコンテキストを強制終了するため、ブレークポイントを再度キャッチする必要があります。
set_trace
デバッグを開始するビューでを呼び出すことにより、pdb、pudb、または別のターミナルデバッガーを使用することもできます。
ブロック以外は広すぎないようにしてください。すべてのコードをキャッチオールで囲むと、try... except...
デバッグするエラーが表示されなくなります。Flaskはすでにデバッガまたは500エラーを表示し、トレースバックをコンソールに出力することで例外を処理するため、これは一般に不要です。
あなたは使用することができるapp.run(debug=True)
ためWERKZEUGデバッガの 編集後述するように、そして私が知られている必要があります。
debug=True
場合、実際にはWerkzeugデバッガーを使用しているため、どちらでもありません;-)
print 'xyz'
すると、コンソールに出力されます。ブラウザでデバッグする場合は、デバッグする場所でエラーを強制する必要があります。raise Exception('xyz')
。これにより、デバッグがトリガーされ、ブラウザーウィンドウに出力されます。
1.1.x
ドキュメントから、環境変数をシェルプロンプトにエクスポートして、デバッグモードを有効にすることができます。
export FLASK_APP=/daemon/api/views.py # path to app
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0
Flask Debug Toolbar拡張機能を使用して、レンダリングされたページに埋め込まれたより詳細な情報を取得することもできます。
from flask import Flask
from flask_debugtoolbar import DebugToolbarExtension
import logging
app = Flask(__name__)
app.debug = True
app.secret_key = 'development key'
toolbar = DebugToolbarExtension(app)
@app.route('/')
def index():
logging.warning("See this message in Flask Debug Toolbar!")
return "<html><body></body></html>"
次のようにアプリケーションを起動します。
FLASK_APP=main.py FLASK_DEBUG=1 flask run
Visual Studio Codeを使用している場合は、
app.run(debug=True)
と
app.run()
内部デバッガーをオンにすると、VS Codeデバッガーが無効になります。
フラスコアプリをデバッグする場合は、フラスコアプリがあるフォルダーに移動します。仮想環境をアクティブ化し、コンソールの行を貼り付けて、「mainfilename」をフラスコのメインファイルに変更することを忘れないでください。
export FLASK_APP="mainfilename.py"
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0
フラスコアプリのデバッガーを有効にすると、ほぼすべてのエラーがコンソールまたはブラウザーウィンドウに出力されます。何が起こっているのかを把握したい場合は、単純な印刷ステートメントを使用するか、JavaScriptコードにconsole.log()を使用することもできます。
python-dotenv
仮想環境にインストールします。
プロジェクトのルートに.flaskenvを作成します。プロジェクトルートとは、app.pyファイルを含むフォルダを意味します
このファイル内に次のように書き込みます。
FLASK_APP=myapp
FLASK_ENV=development
次のコマンドを発行します。
flask run
ヒント-PyCharmを使用している場合は、Edit Configurations
=> に移動してチェックボックスConfigurations
を有効にしFLASK_DEBUG
、を再起動しRun
ます。
開発環境でロガーと印刷ステートメントを使用すると、本番環境の場合は監視センターに行くことができます。
app.run()
(デバッグがオンでもオフでも)。Flaskは他のPythonアプリケーションと同じように動作するため、Pythonアプリケーションをデバッグするのと同じ方法でデバッグできます。ロギングを使用する場合は、ロギングを使用します。印刷したい場合は、印刷を使用してください。必要に応じて、デバッガを使用することもできます。