Как вы собираетесь отлаживать ошибки в Flask? Печать на консоль? Всплывающие сообщения на страницу? Или есть более мощный вариант, чтобы выяснить, что происходит, когда что-то идет не так?
Как отладить приложение Flask
Ответ 1
Запуск приложения в режиме разработки отобразит интерактивную трассировку и консоль в браузере при возникновении ошибки. Чтобы запустить в режиме разработки, установите переменную среды FLASK_ENV=development
затем используйте команду flask run
FLASK_APP
(не забудьте также указать FLASK_APP
на ваше приложение).
Для Linux, Mac, подсистемы Linux для Windows, Git Bash для 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
его на venv/bin/flask
и использовать его так же, как и в командной строке. Вы можете отключить перезагрузку, но перезагрузка убьет контекст отладки, и вам придется снова поймать точку останова.
Вы также можете использовать pdb, pudb или другой отладчик терминала, вызывая set_trace
в представлении, где вы хотите начать отладку.
Не используйте слишком широкие, кроме блоков. Окружающий весь ваш код с помощью всей try... except...
отключит ошибку, которую вы хотите отлаживать. Это вообще не нужно, поскольку Flask уже обрабатывает исключения, показывая отладчик или ошибку 500 и печатает трассировку на консоль.
Ответ 2
Вы можете использовать app.run(debug=True)
для Werkzeug Debugger изменить, как указано ниже, и я должен был знать.
Ответ 3
В 0.11
документации вы можете включить режим отладки, экспортировав переменную среды:
export FLASK_APP=/daemon/api/views.py # path to app
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0
Ответ 4
Если вы используете код Visual Studio, замените
app.run(debug=True)
с
app.run()
При включении внутреннего отладчика он отключает отладчик VS Code.
Ответ 5
Можно также использовать расширение панели флагов Debug, чтобы получить более подробную информацию, встроенную в отображаемые страницы.
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
Ответ 6
Если вы хотите отладить приложение Flak, просто перейдите в папку, в которой находится приложение фляги, не забудьте активировать виртуальную среду и вставить строки в консоли, изменив "mainfilename" на основной файл фляги.
export FLASK_APP="mainfilename.py"
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0
После того, как вы включите отладчик для приложения фляги, почти каждая ошибка будет напечатана на консоли или в окне браузера. Если вы хотите выяснить, что происходит, вы можете использовать простые операторы печати или также использовать console.log() для кода javascript.
Ответ 7
Если вы используете его локально и хотите выполнить код:
python -m pdb script.py
Ответ 8
Быстрый совет - если вы используете PyCharm, перейдите в Edit Configurations
=> Configurations
и включите флажок FLASK_DEBUG
, перезапустите Run
.
Ответ 9
Используйте регистраторы и распечатывайте заявления в среде разработки, вы можете пойти на часовой в случае производственных сред.
Ответ 10
Установите python-dotenv
в вашей виртуальной среде.
Создайте .flaskenv в корне вашего проекта. Под корнем проекта я имею в виду папку с файлом app.py
Внутри этого файла напишите следующее:
FLASK_APP=myapp
FLASK_ENV=development
Теперь введите следующую команду:
flask run