контекст
Я отлаживаю приложение с помощью кода Visual Studio (VSCode).
Точки останова НЕ поражены!
Точки останова НЕ поражаются при использовании launch.json (См. [1])
Я могу отлаживать с помощью launch.json (см. [2]), но отладчик не останавливается в точке останова!
Я бы хотел, чтобы VSCode останавливался на моих точках останова, когда это необходимо
** Какая правильная конфигурация для launch.json для достижения точек останова? **
Спасибо за потраченное время, помогая мне!
иерархия проекта
- launch.json
- index.py См. [4]
- app.py См. [3]
- страниц
- launch.json описывается ниже [1]
проблема: Ошибка: модуль 'index' не имеет атрибута 'app.server '
Сообщение об ошибке отображается после нажатия кнопки «Начать отладку> F5» = Ошибка: модуль «index» не имеет атрибута «app.server»
Я пробовал десятки способов установить "FLASK_APP": "index: app.server" , но они генерируют различные сообщения об ошибках:
"FLASK_APP": "index: app.server" генерирует эту ошибку Ошибка: действительное приложение Flask не было получено из "index: app".
"FLASK_APP": "index.py" генерирует эту ошибку Ошибка: ошибкаПриложение или фабрика Flask в модуле «index». Используйте "FLASK_APP = index: name, чтобы указать один.
для информации: команда gunicorn (работает)
здесь есть команда, доступная в azure-pipelines.yml
runningприложение plotly:
gunicorn --bind=0.0.0.0 --timeout 600 index:app.server
вложенные файлы
[1] launch.json - не работает
{
"version": "0.2.0",
"configurations": [
{
"name": "Flask",
"type": "python",
"request": "launch",
"module": "flask",
"env": {
"FLASK_APP": "index:app.server",
"FLASK_ENV": "development",
"FLASK_DEBUG": "1",
"FLASK_RUN_PORT": "8052"
},
"args": [
"run",
"--no-debugger",
"--no-reload"
],
"jinja": true
}
]
}
[2] launch.json - работает, но точки останова не достигнуты
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${workspaceRoot}\\index.py",
"console": "integratedTerminal"
}
]
}
[3] webapp.py
# -*- coding: utf-8 -*-
import dash
app = dash.Dash(
__name__, meta_tags=[{"name": "viewport",
"content": "width=device-width, initial-scale=1"}]
)
server = app.server
app.config.suppress_callback_exceptions = True
index.py - корень приложения
# -*- coding: utf-8 -*-
import dash_html_components as html
import dash_core_components as dcc
from webapp import app
from dash.dependencies import Input, Output
from pages import (
transactions, index)
# Describe the layout/ UI of the app
app.layout = html.Div([
dcc.Location(id="url", refresh=False),
html.Div(id="page-content")
])
# Update page
@app.callback(Output("page-content", "children"),
[Input("url", "pathname")])
def display_page(pathname):
if pathname == "/dash/index":
return index.layout
if pathname == "/dash/transactions":
return transactions.layout
else:
return index.layout
if __name__ == "__main__":
app.run_server(debug=True, port=8051)