Risposte:
L'esecuzione dell'app in modalità di sviluppo mostrerà un traceback interattivo e una console nel browser quando si verifica un errore. Per eseguire in modalità di sviluppo, imposta la FLASK_ENV=development
variabile d'ambiente quindi usa il flask run
comando (ricorda di puntare anche FLASK_APP
sulla tua app).
Per Linux, Mac, Sottosistema Linux per Windows, Git Bash su Windows, ecc .:
export FLASK_APP=myapp
export FLASK_ENV=development
flask run
Per Windows CMD, utilizzare set
invece di esportare:
set FLASK_ENV=development
Per PowerShell, utilizzare $env
:
$env:FLASK_ENV = "development"
Prima di Flask 1.0, invece, era controllato dalla FLASK_DEBUG=1
variabile d'ambiente.
Se si utilizza il app.run()
metodo anziché il flask run
comando, passare debug=True
per abilitare la modalità debug.
I traceback vengono inoltre stampati sul terminale che esegue il server, indipendentemente dalla modalità di sviluppo.
Se stai usando PyCharm, VS Code, ecc., Puoi sfruttare il suo debugger per scorrere il codice con punti di interruzione. La configurazione di esecuzione può puntare a una chiamata di script app.run(debug=True, use_reloader=False)
oppure puntare allo venv/bin/flask
script e utilizzarlo come si farebbe dalla riga di comando. Puoi lasciare il reloader disabilitato, ma un ricaricamento ucciderà il contesto di debug e dovrai catturare di nuovo un breakpoint.
È inoltre possibile utilizzare pdb, pudb o un altro debugger terminale chiamando set_trace
nella vista in cui si desidera avviare il debug.
Assicurati di non usare troppo larghi tranne i blocchi. Circondare tutto il codice con un catch-all try... except...
silenzierà l'errore che si desidera eseguire il debug. In generale non è necessario, poiché Flask gestirà già le eccezioni mostrando il debugger o un errore 500 e stampando il traceback sulla console.
È possibile utilizzare app.run(debug=True)
per la modifica del debugger Werkzeug come indicato di seguito, e avrei dovuto saperlo.
debug=True
te, stai effettivamente usando il debuger di Werkzeug, quindi non è né uno né l'altro ;-)
print 'xyz'
verrà stampato sulla console. Se si desidera eseguire il debug nel browser, sarà necessario forzare un errore nel punto in cui si desidera eseguire il debug. raise Exception('xyz')
. Ciò attiverà l'output del debug nella finestra del browser.
Dalla 1.1.x
documentazione , è possibile abilitare la modalità debug esportando una variabile di ambiente al prompt della shell:
export FLASK_APP=/daemon/api/views.py # path to app
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0
Si può anche usare l' estensione Flask Debug Toolbar per ottenere informazioni più dettagliate incorporate nelle pagine renderizzate.
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>"
Avviare l'applicazione come segue:
FLASK_APP=main.py FLASK_DEBUG=1 flask run
Se stai usando Visual Studio Code, sostituiscilo
app.run(debug=True)
con
app.run()
Appare quando si attiva il debugger interno disabilita il debugger VS Code.
Se si desidera eseguire il debug dell'app Flask, basta andare alla cartella in cui si trova l'app Flask. Non dimenticare di attivare il tuo ambiente virtuale e incollare le righe nella console cambiare "mainfilename" in flask main file.
export FLASK_APP="mainfilename.py"
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0
Dopo aver abilitato il debugger per l'app di pallone, quasi tutti gli errori verranno stampati sulla console o sulla finestra del browser. Se vuoi capire cosa sta succedendo, puoi usare semplici istruzioni di stampa o puoi anche utilizzare console.log () per il codice javascript.
Installa python-dotenv
nel tuo ambiente virtuale.
Crea un .flaskenv nella radice del tuo progetto. Per radice del progetto, intendo la cartella che contiene il tuo file app.py
All'interno di questo file scrivi quanto segue:
FLASK_APP=myapp
FLASK_ENV=development
Ora emetti il seguente comando:
flask run
Suggerimento rapido: se si utilizza un PyCharm, selezionare Edit Configurations
=> Configurations
e abilitare la FLASK_DEBUG
casella di controllo, riavviare Run
.
Utilizza i logger e le istruzioni di stampa nell'ambiente di sviluppo, puoi scegliere sentinella in caso di ambienti di produzione.
Se lo stai eseguendo localmente e vuoi essere in grado di scorrere il codice:
python -m pdb script.py
app.run()
(con il debug attivato o disattivato). Flask si comporta come qualsiasi altra applicazione Python, quindi puoi eseguire il debug nello stesso modo in cui esegui il debug di qualsiasi applicazione Python. Se si desidera utilizzare la registrazione, utilizzare la registrazione. Se si desidera stampare, utilizzare stampe. Puoi anche usare un debugger se vuoi.