Réponses:
L'exécution de l'application en mode développement affichera un suivi interactif et une console dans le navigateur en cas d'erreur. Pour exécuter en mode développement, définissez la FLASK_ENV=development
variable d'environnement puis utilisez leflask run
commande (n'oubliez pas de pointer également FLASK_APP
vers votre application).
Pour Linux, Mac, sous-système Linux pour Windows, Git Bash sous Windows, etc.:
export FLASK_APP=myapp
export FLASK_ENV=development
flask run
Pour Windows CMD, utilisez set
au lieu d'exporter:
set FLASK_ENV=development
Pour PowerShell, utilisez $env
:
$env:FLASK_ENV = "development"
Avant Flask 1.0, cela était FLASK_DEBUG=1
plutôt contrôlé par la variable d'environnement.
Si vous utilisez la app.run()
méthode au lieu de la flask run
commande, passez debug=True
pour activer le mode débogage.
Les traces sont également imprimées sur le terminal exécutant le serveur, quel que soit le mode de développement.
Si vous utilisez PyCharm, VS Code, etc., vous pouvez profiter de son débogueur pour parcourir le code avec des points d'arrêt. La configuration d'exécution peut pointer vers un appel de script app.run(debug=True, use_reloader=False)
, ou le pointer vers le venv/bin/flask
script et l'utiliser comme vous le feriez depuis la ligne de commande. Vous pouvez laisser le rechargement désactivé, mais un rechargement tuera le contexte de débogage et vous devrez à nouveau attraper un point d'arrêt.
Vous pouvez également utiliser pdb, pudb ou un autre débogueur de terminal en appelant set_trace
dans la vue où vous souhaitez démarrer le débogage.
Veillez à ne pas utiliser de blocs trop larges sauf. Entourer tout votre code d'un fourre-tout try... except...
fera taire l'erreur que vous souhaitez déboguer. C'est inutile en général, puisque Flask gérera déjà les exceptions en affichant le débogueur ou une erreur 500 et en imprimant le traçage sur la console.
Vous pouvez utiliser app.run(debug=True)
pour l' édition du débogueur Werkzeug comme mentionné ci-dessous, et j'aurais dû le savoir.
debug=True
vous utilisez réellement le débogueur Werkzeug, donc ce n'est pas un soit-ou ;-)
print 'xyz'
imprimera sur la console. Si vous souhaitez déboguer dans le navigateur, vous devrez forcer une erreur sur l'endroit où vous souhaitez déboguer. raise Exception('xyz')
. Cela déclenchera la sortie du débogage dans la fenêtre du navigateur.
Depuis la 1.1.x
documentation , vous pouvez activer le mode débogage en exportant une variable d'environnement vers votre invite de shell:
export FLASK_APP=/daemon/api/views.py # path to app
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0
On peut également utiliser l' extension Flask Debug Toolbar pour obtenir des informations plus détaillées intégrées dans les pages rendues.
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>"
Démarrez l'application comme suit:
FLASK_APP=main.py FLASK_DEBUG=1 flask run
Si vous utilisez Visual Studio Code, remplacez
app.run(debug=True)
avec
app.run()
Il apparaît lorsque l'activation du débogueur interne désactive le débogueur VS Code.
Si vous souhaitez déboguer votre application flask, accédez simplement au dossier où se trouve l'application flask. N'oubliez pas d'activer votre environnement virtuel et collez les lignes dans la console, changez "mainfilename" en flask main file.
export FLASK_APP="mainfilename.py"
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0
Après avoir activé votre débogueur pour l'application flask, presque toutes les erreurs seront imprimées sur la console ou dans la fenêtre du navigateur. Si vous voulez comprendre ce qui se passe, vous pouvez utiliser des instructions d'impression simples ou vous pouvez également utiliser console.log () pour le code javascript.
Installer python-dotenv
dans votre environnement virtuel.
Créez un fichier .flaskenv dans la racine de votre projet. Par racine du projet, j'entends le dossier contenant votre fichier app.py
Dans ce fichier, écrivez ce qui suit:
FLASK_APP=myapp
FLASK_ENV=development
Exécutez maintenant la commande suivante:
flask run
Astuce rapide - si vous utilisez un PyCharm, accédez à Edit Configurations
=> Configurations
et activez la FLASK_DEBUG
case à cocher, redémarrez le Run
.
Utilisez des enregistreurs et imprimez des déclarations dans l'environnement de développement, vous pouvez opter pour une sentinelle en cas d'environnements de production.
Si vous l'exécutez localement et que vous souhaitez pouvoir parcourir le code:
python -m pdb script.py
app.run()
(avec le débogage activé ou désactivé). Flask se comporte comme n'importe quelle autre application Python, vous pouvez donc le déboguer de la même manière que vous déboguez n'importe quelle application Python. Si vous souhaitez utiliser la journalisation, utilisez la journalisation. Si vous souhaitez imprimer, utilisez des impressions. Vous pouvez même utiliser un débogueur si vous le souhaitez.