Ответы:
Запуск приложения в режиме разработки покажет интерактивную трассировку и консоль в браузере при возникновении ошибки. Чтобы запустить в режиме разработки, установите 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 и выводя трассировку на консоль.
Вы можете использовать app.run(debug=True)
для редактирования Werkzeug Debugger, как указано ниже, и я должен был знать.
debug=True
вами, вы фактически используете отладчик Werkzeug, так что это не либо-либо ;-)
print 'xyz'
будет печатать на консоли. Если вы хотите отлаживать в браузере, вам нужно будет принудительно выдать ошибку в том месте, где вы хотите отлаживать. raise Exception('xyz')
, Это приведет к тому, что отладка будет выводиться в окне браузера.
Из 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
Можно также использовать расширение Flask Debug Toolbar для получения более подробной информации, встроенной в отображаемые страницы.
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
Если вы используете Visual Studio Code, замените
app.run(debug=True)
с участием
app.run()
Появляется при включении внутреннего отладчика отключает отладчик VS Code.
Если вы хотите отлаживать приложение 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.
Установите python-dotenv
в своей виртуальной среде.
Создайте .flaskenv в корне вашего проекта. Под корнем проекта я подразумеваю папку, в которой находится ваш файл app.py
Внутри этого файла напишите следующее:
FLASK_APP=myapp
FLASK_ENV=development
Теперь выполните следующую команду:
flask run
Подсказка - если вы используете PyCharm, перейдите к Edit Configurations
=> Configurations
и установите FLASK_DEBUG
флажок, перезапустите Run
.
Используйте регистраторы и операторы печати в среде разработки, вы можете быть на страже в случае производственных сред.
Если вы запускаете его локально и хотите иметь возможность пошагово выполнять код:
python -m pdb script.py
app.run()
(ни с включенной, ни с выключенной отладкой). Flask ведет себя как любое другое приложение на Python, поэтому вы можете отлаживать его так же, как отлаживаете любое приложение Python. Если вы хотите использовать ведение журнала, используйте ведение журнала. Если хотите распечатать, используйте распечатки. Вы даже можете использовать отладчик, если хотите.