Antworten:
Wenn Sie die App im Entwicklungsmodus ausführen, werden im Fehlerfall ein interaktives Traceback und eine Konsole im Browser angezeigt. Um im Entwicklungsmodus ausgeführt zu werden, legen Sie die FLASK_ENV=development
Umgebungsvariable fest und verwenden Sie den flask run
Befehl (denken Sie daran, auch FLASK_APP
auf Ihre App zu zeigen).
Für Linux, Mac, Linux-Subsystem für Windows, Git Bash unter Windows usw.:
export FLASK_APP=myapp
export FLASK_ENV=development
flask run
Verwenden Sie für Windows CMD set
anstelle des Exports:
set FLASK_ENV=development
Verwenden Sie für PowerShell $env
:
$env:FLASK_ENV = "development"
Vor Flask 1.0 wurde dies FLASK_DEBUG=1
stattdessen von der Umgebungsvariablen gesteuert .
Wenn Sie die app.run()
Methode anstelle des flask run
Befehls verwenden, übergeben Sie debug=True
, um den Debug-Modus zu aktivieren.
Tracebacks werden unabhängig vom Entwicklungsmodus auch auf dem Terminal gedruckt, auf dem der Server ausgeführt wird.
Wenn Sie PyCharm, VS-Code usw. verwenden, können Sie den Debugger nutzen, um den Code mit Haltepunkten zu durchlaufen. Die Ausführungskonfiguration kann auf einen Skriptaufruf app.run(debug=True, use_reloader=False)
verweisen oder auf das venv/bin/flask
Skript verweisen und es wie in der Befehlszeile verwenden. Sie können den Reloader deaktiviert lassen, aber ein Neuladen beendet den Debugging-Kontext und Sie müssen erneut einen Haltepunkt abfangen.
Sie können auch pdb, pudb oder einen anderen Terminal-Debugger verwenden, indem Sie set_trace
die Ansicht aufrufen, in der Sie mit dem Debuggen beginnen möchten.
Verwenden Sie nur Blöcke mit Ausnahme von Blöcken. Wenn Sie Ihren gesamten Code mit einem Catch-All umgeben, try... except...
wird der Fehler, den Sie debuggen möchten, stummgeschaltet. Dies ist im Allgemeinen nicht erforderlich, da Flask bereits Ausnahmen behandelt, indem der Debugger oder ein 500-Fehler angezeigt und der Traceback auf der Konsole gedruckt wird.
Sie können app.run(debug=True)
für die Werkzeug Debugger- Bearbeitung wie unten erwähnt verwenden, und ich hätte es wissen müssen.
debug=True
Sie tatsächlich den Werkzeug-Debuger, also ist es kein Entweder-Oder ;-)
print 'xyz'
wird auf der Konsole gedruckt. Wenn Sie im Browser debuggen möchten, müssen Sie einen Fehler erzwingen, an dem Sie debuggen möchten. raise Exception('xyz')
. Dies löst die Ausgabe des Debugs im Browserfenster aus.
In der 1.1.x
Dokumentation können Sie den Debug-Modus aktivieren, indem Sie eine Umgebungsvariable in Ihre Shell-Eingabeaufforderung exportieren:
export FLASK_APP=/daemon/api/views.py # path to app
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0
Sie können auch die Erweiterung der Flask Debug-Symbolleiste verwenden , um detailliertere Informationen in gerenderte Seiten einzubetten.
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>"
Starten Sie die Anwendung wie folgt:
FLASK_APP=main.py FLASK_DEBUG=1 flask run
Wenn Sie Visual Studio Code verwenden, ersetzen Sie
app.run(debug=True)
mit
app.run()
Beim Einschalten des internen Debuggers wird der VS-Code-Debugger deaktiviert.
Wenn Sie Ihre Kolben-App debuggen möchten, gehen Sie einfach zu dem Ordner, in dem sich die Kolben-App befindet. Vergessen Sie nicht, Ihre virtuelle Umgebung zu aktivieren und die Zeilen in die Konsole einzufügen. Ändern Sie "mainfilename" in flask main file.
export FLASK_APP="mainfilename.py"
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0
Nachdem Sie Ihren Debugger für die Flask-App aktiviert haben, wird fast jeder Fehler auf der Konsole oder im Browserfenster gedruckt. Wenn Sie herausfinden möchten, was passiert, können Sie einfache print-Anweisungen verwenden oder auch console.log () für Javascript-Code verwenden.
Installieren Sie python-dotenv
in Ihrer virtuellen Umgebung.
Erstellen Sie eine .flaskenv in Ihrem Projektstamm. Mit Projektstamm meine ich den Ordner, in dem sich Ihre Datei app.py befindet
Schreiben Sie in diese Datei Folgendes:
FLASK_APP=myapp
FLASK_ENV=development
Geben Sie nun den folgenden Befehl ein:
flask run
Kurztipp - Wenn Sie einen PyCharm verwenden, gehen Sie zu Edit Configurations
=> Configurations
und aktivieren Sie das FLASK_DEBUG
Kontrollkästchen. Starten Sie das neu Run
.
Verwenden Sie Logger und Druckanweisungen in der Entwicklungsumgebung. In Produktionsumgebungen können Sie Wachposten einsetzen.
Wenn Sie es lokal ausführen und den Code schrittweise ausführen möchten:
python -m pdb script.py
app.run()
(entweder mit aktiviertem oder deaktiviertem Debug). Flask verhält sich wie jede andere Python-Anwendung, sodass Sie es genauso debuggen können wie jede Python-Anwendung. Wenn Sie die Protokollierung verwenden möchten, verwenden Sie die Protokollierung. Wenn Sie drucken möchten, verwenden Sie Drucke. Sie können sogar einen Debugger verwenden, wenn Sie möchten.