Respostas:
A execução do aplicativo no modo de desenvolvimento mostrará um retorno e console interativos no navegador quando houver um erro. Para executar no modo de desenvolvimento, defina a FLASK_ENV=development
variável de ambiente e use o flask run
comando (lembre-se de apontar também FLASK_APP
para o seu aplicativo).
Para Linux, Mac, Subsistema Linux para Windows, Git Bash no Windows, etc .:
export FLASK_APP=myapp
export FLASK_ENV=development
flask run
Para o Windows CMD, use em set
vez de exportar:
set FLASK_ENV=development
Para o PowerShell, use $env
:
$env:FLASK_ENV = "development"
Antes do Flask 1.0, isso era controlado pela FLASK_DEBUG=1
variável de ambiente.
Se você estiver usando o app.run()
método em vez do flask run
comando, passe debug=True
para ativar o modo de depuração.
Os rastreamentos também são impressos no terminal executando o servidor, independentemente do modo de desenvolvimento.
Se você estiver usando PyCharm, VS Code, etc., poderá aproveitar o depurador para percorrer o código com pontos de interrupção. A configuração de execução pode apontar para uma chamada de script app.run(debug=True, use_reloader=False)
ou apontar para o venv/bin/flask
script e usá-lo como faria na linha de comando. Você pode deixar o recarregador desativado, mas um recarregamento matará o contexto de depuração e você precisará capturar um ponto de interrupção novamente.
Você também pode usar pdb, pudb ou outro depurador de terminal chamando set_trace
na visualização em que deseja iniciar a depuração.
Certifique-se de não usar muito amplo, exceto blocos. Cercar todo o seu código com um catch-all try... except...
silenciará o erro que você deseja depurar. Geralmente, é desnecessário, pois o Flask já manipulará exceções, mostrando o depurador ou um erro 500 e imprimindo o retorno ao console.
Você pode usar app.run(debug=True)
a edição do Werkzeug Debugger, como mencionado abaixo, e eu deveria saber.
debug=True
que você está realmente usando o debuger Werkzeug por isso não é um ou-ou ;-)
print 'xyz'
será impresso no console. Se você deseja depurar no navegador, precisará forçar um erro no local em que deseja depurar. raise Exception('xyz')
. Isso acionará a depuração para saída na janela do navegador.
Na 1.1.x
documentação , você pode ativar o modo de depuração exportando uma variável de ambiente para o prompt do shell:
export FLASK_APP=/daemon/api/views.py # path to app
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0
Pode-se também usar a extensão Flask Debug Toolbar para obter informações mais detalhadas incorporadas nas páginas renderizadas.
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>"
Inicie o aplicativo da seguinte maneira:
FLASK_APP=main.py FLASK_DEBUG=1 flask run
Se você estiver usando o Código do Visual Studio, substitua
app.run(debug=True)
com
app.run()
Aparece ao ativar o depurador interno, desabilita o depurador do VS Code.
Se você deseja depurar seu aplicativo de balão, basta ir para a pasta onde está o aplicativo de balão. Não se esqueça de ativar seu ambiente virtual e colar as linhas no console, altere "mainfilename" para o arquivo principal do balão.
export FLASK_APP="mainfilename.py"
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0
Depois de ativar o aplicativo depurador para balão, quase todos os erros serão impressos no console ou na janela do navegador. Se você quiser descobrir o que está acontecendo, pode usar instruções de impressão simples ou também console.log () para código javascript.
Instale python-dotenv
no seu ambiente virtual.
Crie um .flaskenv na raiz do seu projeto. Por raiz do projeto, quero dizer a pasta que possui o arquivo app.py
Dentro deste arquivo, escreva o seguinte:
FLASK_APP=myapp
FLASK_ENV=development
Agora emita o seguinte comando:
flask run
Dica rápida - se você usa um PyCharm, vá para Edit Configurations
=> Configurations
e ative a FLASK_DEBUG
caixa de seleção, reinicie o Run
.
Use registradores e instruções de impressão no ambiente de desenvolvimento, você pode ir para sentinela no caso de ambientes de produção.
Se você está executando localmente e deseja poder percorrer o código:
python -m pdb script.py
app.run()
(com a depuração ativada ou desativada). O balão se comporta como qualquer outro aplicativo python, para que você possa depurá-lo da mesma maneira que depura qualquer aplicativo Python. Se você deseja usar o log, use o log. Se você deseja imprimir, use impressões. Você pode até usar um depurador, se quiser.