Как вы собираетесь отлаживать ошибки во Flask? Распечатать в консоль? Быстрые сообщения на страницу? Или есть более мощный способ выяснить, что происходит, когда что-то идет не так?
В этом нет ничего волшебного app.run()(ни с включенной, ни с выключенной отладкой). Flask ведет себя как любое другое приложение на Python, поэтому вы можете отлаживать его так же, как отлаживаете любое приложение Python. Если вы хотите использовать ведение журнала, используйте ведение журнала. Если хотите распечатать, используйте распечатки. Вы даже можете использовать отладчик, если хотите.
Марк Хилдрет
Ответы:
128
Запуск приложения в режиме разработки покажет интерактивную трассировку и консоль в браузере при возникновении ошибки. Чтобы запустить в режиме разработки, установите FLASK_ENV=developmentпеременную среды, затем используйте flask runкоманду (не забудьте указать и 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 сценарий и использовать его, как в командной строке. Вы можете оставить перезагрузку отключенной, но перезагрузка убьет контекст отладки, и вам придется снова поймать точку останова.
Вы также можете использовать pdb, pudb или другой отладчик терминала, вызвав set_traceто представление, с которого вы хотите начать отладку.
Не используйте слишком широкие блоки, кроме блоков. Окружение всего вашего кода универсальным кодом try... except...заставит замолчать ошибку, которую вы хотите отладить. В общем, в этом нет необходимости, поскольку Flask уже обрабатывает исключения, показывая отладчик или ошибку 500 и выводя трассировку на консоль.
На самом деле, когда вы работаете с debug=Trueвами, вы фактически используете отладчик Werkzeug, так что это не либо-либо ;-)
Шон Виейра,
Ха, ты прав. Думаю, мне следовало посмотреть на файл setup.py Flask на предмет требований. Я использую его модифицированную копию для работы в GAE, где вам нужно инициализировать Werkzeug вручную.
bnlucas
Я установил app.run (debug = True), если я напечатаю xyz, куда он печатает, спасибо
Кимми
Использование print 'xyz'будет печатать на консоли. Если вы хотите отлаживать в браузере, вам нужно будет принудительно выдать ошибку в том месте, где вы хотите отлаживать. raise Exception('xyz'), Это приведет к тому, что отладка будет выводиться в окне браузера.
bnlucas
25
Из 1.1.xдокументации вы можете включить режим отладки, экспортировав переменную среды в приглашение оболочки:
export FLASK_APP=/daemon/api/views.py # path to app
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0
Этот ответ был бы более полезным, если бы он объяснил, что такое режим отладки на самом деле. Это что-то большее, чем просто возможность отладки в браузере? К сожалению, поскольку я работаю над REST API, это мне не очень помогает.
Майкл Шепер,
Куда мне поместить этот фрагмент?
mLstudent33
1
@ mLstudent33 в оболочке
Эдуард Лопес,
16
Можно также использовать расширение Flask Debug Toolbar для получения более подробной информации, встроенной в отображаемые страницы.
from flask importFlaskfrom flask_debugtoolbar importDebugToolbarExtensionimport 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, определенный в моем env, и конфигурация по умолчанию не будет работать. Я пробовал вот это - pastebin.com/v8hBQ2vv и ряд подобных перестановок, но безрезультатно.
Брэндон Дьюб
12
Если вы хотите отлаживать приложение Flask, просто перейдите в папку, где находится приложение Flask. Не забудьте активировать виртуальную среду и вставить строки в консоли, изменив "mainfilename", на главный файл flask.
export FLASK_APP="mainfilename.py"
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0
После того, как вы включите отладчик для приложения Flask, почти каждая ошибка будет выводиться на консоль или в окно браузера. Если вы хотите выяснить, что происходит, вы можете использовать простые операторы печати или вы также можете использовать console.log () для кода javascript.
Не работает для меня ... он продолжает показывать режим отладки: выключен
Федерико Джентиле
3
Для Включение режима отладки в колбе просто введите установить FLASK_DEBUG=1на свой контекстуальный CMDдля окон и экспорта FLASK_DEBUG=1на Linux termial затем перезапустить приложение , и вы хорошо идти !!
app.run()
(ни с включенной, ни с выключенной отладкой). Flask ведет себя как любое другое приложение на Python, поэтому вы можете отлаживать его так же, как отлаживаете любое приложение Python. Если вы хотите использовать ведение журнала, используйте ведение журнала. Если хотите распечатать, используйте распечатки. Вы даже можете использовать отладчик, если хотите.Ответы:
Запуск приложения в режиме разработки покажет интерактивную трассировку и консоль в браузере при возникновении ошибки. Чтобы запустить в режиме разработки, установите
FLASK_ENV=development
переменную среды, затем используйтеflask run
команду (не забудьте указать иFLASK_APP
на свое приложение).Для Linux, Mac, подсистемы Linux для Windows, Git Bash для Windows и т. Д .:
Для Windows CMD используйте
set
вместо экспорта:Для PowerShell используйте
$env
:До 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
сценарий и использовать его, как в командной строке. Вы можете оставить перезагрузку отключенной, но перезагрузка убьет контекст отладки, и вам придется снова поймать точку останова.Вы также можете использовать pdb, pudb или другой отладчик терминала, вызвав
set_trace
то представление, с которого вы хотите начать отладку.Не используйте слишком широкие блоки, кроме блоков. Окружение всего вашего кода универсальным кодом
try... except...
заставит замолчать ошибку, которую вы хотите отладить. В общем, в этом нет необходимости, поскольку Flask уже обрабатывает исключения, показывая отладчик или ошибку 500 и выводя трассировку на консоль.источник
Вы можете использовать
app.run(debug=True)
для редактирования Werkzeug Debugger, как указано ниже, и я должен был знать.источник
debug=True
вами, вы фактически используете отладчик Werkzeug, так что это не либо-либо ;-)print 'xyz'
будет печатать на консоли. Если вы хотите отлаживать в браузере, вам нужно будет принудительно выдать ошибку в том месте, где вы хотите отлаживать.raise Exception('xyz')
, Это приведет к тому, что отладка будет выводиться в окне браузера.Из
1.1.x
документации вы можете включить режим отладки, экспортировав переменную среды в приглашение оболочки:источник
Можно также использовать расширение Flask Debug Toolbar для получения более подробной информации, встроенной в отображаемые страницы.
Запустите приложение следующим образом:
источник
Если вы используете Visual Studio Code, замените
с участием
Появляется при включении внутреннего отладчика отключает отладчик VS Code.
источник
Если вы хотите отлаживать приложение Flask, просто перейдите в папку, где находится приложение Flask. Не забудьте активировать виртуальную среду и вставить строки в консоли, изменив "mainfilename", на главный файл flask.
После того, как вы включите отладчик для приложения Flask, почти каждая ошибка будет выводиться на консоль или в окно браузера. Если вы хотите выяснить, что происходит, вы можете использовать простые операторы печати или вы также можете использовать console.log () для кода javascript.
источник
Установите
python-dotenv
в своей виртуальной среде.Создайте .flaskenv в корне вашего проекта. Под корнем проекта я подразумеваю папку, в которой находится ваш файл app.py
Внутри этого файла напишите следующее:
Теперь выполните следующую команду:
источник
Для Включение режима отладки в колбе просто введите установить
FLASK_DEBUG=1
на свой контекстуальныйCMD
для окон и экспортаFLASK_DEBUG=1
на Linux termial затем перезапустить приложение , и вы хорошо идти !!источник
Подсказка - если вы используете PyCharm, перейдите к
Edit Configurations
=>Configurations
и установитеFLASK_DEBUG
флажок, перезапуститеRun
.источник
Используйте регистраторы и операторы печати в среде разработки, вы можете быть на страже в случае производственных сред.
источник
Для пользователей Windows:
Откройте Powershell и cd в каталог вашего проекта.
Используйте эти коммандос в Powershell, все остальное не будет работать в Powershell.
источник
Если вы запускаете его локально и хотите иметь возможность пошагово выполнять код:
python -m pdb script.py
источник