Невозможно отладить приложение flask в коде Visual Studio на Windows - PullRequest
0 голосов
/ 08 марта 2020

У меня проблемы с отладкой flask приложения в коде Visual Studio.

Я настроил параметры запуска для приложения flask, и я работаю в виртуальной среде Python 3.6 при локальной работе.

Я хочу иметь возможность наблюдать за переменными и т. Д. c, поэтому надеялся, что это будет довольно просто сделать, но по какой-то причине, когда я нажимаю кнопку «Выполнить и отладить», мой flask приложение не запускается со следующей ошибкой:

(.venv) PS C:\Users\jmatson\source\repos\StoreServicesStoreBuilder\StoreServices-Flask-StoreBuilder> ${env:PTVSD_LAUNCHER_PORT}='55000'; & 'c:\Users\jmatson\source\repos\StoreServicesStoreBuilder\StoreServices-Flask-StoreBuilder\.venv\scripts\python.exe' 'c:\Users\jmatson\.vscode\extensions\ms-python.python-2020.2.64397\pythonFiles\lib\python\new_ptvsd\no_wheels\ptvsd\launcher' '-m' 'flask' 'run' '--no-debugger' '--port' '5000'
 * Serving Flask app "C:\Users\jmatson\source\repos\StoreServicesStoreBuilder/StoreServices-Flask-StoreBuilder/app.py"
 * Environment: development
 * Debug mode: off
Usage: python -m flask run [OPTIONS]

Error: While importing "StoreServices-Flask-StoreBuilder.app", an ImportError was raised:

Traceback (most recent call last):
  File "c:\Users\jmatson\source\repos\StoreServicesStoreBuilder\StoreServices-Flask-StoreBuilder\.venv\lib\site-packages\flask\cli.py",
line 240, in locate_app
    __import__(module_name)
  File "C:\Users\jmatson\source\repos\StoreServicesStoreBuilder\StoreServices-Flask-StoreBuilder\app.py", line 8, in <module>
    from model import Page, ActivityTask, ActivityTemplate, TemplateActivityTask, Server, ProgressBar
ModuleNotFoundError: No module named 'model'

Эта ошибка, несмотря на то, что приложение работает нормально, когда я просто использую 'python app.py'. Вот мой код импорта для app.py (модель является локальным модулем, поэтому просто еще один файл .py, сохраненный в том же каталоге, что и app.py)

from flask import render_template
from flask import request
from flask import Flask, redirect, url_for, flash, Response
import logging
import json
import requests
import os
from model import Page, ActivityTask, ActivityTemplate, TemplateActivityTask, Server, ProgressBar
from operations import ApiOperation, InSiteAPI, Helpers
from config import Config
import forms
from forms import ActivityTaskForm, SubmitDeleteActivityForm, ActivityTemplateForm, ActivityTemplateUpdateForm
from dbmodel import DbActivityTask, DbActivityTemplate, DbTemplateActivityTask
from pynamodb.models import Model
from pynamodb.attributes import (
    UnicodeAttribute, NumberAttribute, UnicodeSetAttribute, UTCDateTimeAttribute
)

Моя структура папок выглядит следующим образом:

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       19/02/2020   2:49 PM                .venv
d-----        1/02/2020   2:16 PM                infrastructure
d-----        1/02/2020   2:16 PM                local_deployment
d-----        1/02/2020   2:16 PM                static
d-----       28/02/2020  12:38 PM                templates
d-----        6/03/2020   4:28 PM                __pycache__
-a----        3/03/2020   2:30 PM             96 .gitignore
-a----        6/03/2020   4:25 PM           9106 app.py
-a----        1/02/2020   4:23 PM            370 config.py
-a----        6/03/2020   9:29 AM           2784 dbmodel.py
-a----       19/02/2020   2:45 PM           1951 dbmodel.pyc
-a----        5/03/2020   1:30 PM           2594 forms.py
-a----        6/03/2020   3:25 PM           9275 model.py
-a----       19/02/2020   2:45 PM           2969 model.pyc
-a----       19/02/2020   2:45 PM           1239 operations.py
-a----        6/03/2020   8:49 AM           3549 README.md
-a----        1/02/2020   2:19 PM           1324 requirements.txt
-a----        1/02/2020   2:16 PM            213 zappa_settings.json
-a----        1/02/2020   2:16 PM              0 __init__.py

Вот как я пытался настроить свой запуск. json

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Flask",
            "type": "python",
            "request": "launch",
            "module": "flask",
            "pythonPath": "${config:python.pythonPath}",
            "env": {
                "FLASK_APP": "${workspaceRoot}/StoreServices-Flask-StoreBuilder/app.py",
                "FLASK_ENV": "development",
                "FLASK_DEBUG": "0"
            },
            "args": [
                "run",
                "--no-debugger",
                "--no-reload",
                "--port",
                "5000"
            ],
            "jinja": true
        }
    ]
}

Не уверен, актуально это или нет, но вот как я настроил python путь и путь линтинга:

{
    "python.linting.enabled": false,
    "python.pythonPath": "${workspaceRoot}\\StoreServices-Flask-StoreBuilder\\.venv\\scripts\\python.exe",
    "python.linting.pylintEnabled": false,
    "python.linting.pylintPath": "${workspaceRoot}\\StoreServices-Flask-StoreBuilder\\.venv\\scripts\\pylint.exe",
    "python.linting.flake8Enabled": true
}

РЕДАКТИРОВАТЬ: Примечание. Я также убедился, что я выбираю правильного интерпретатора в коде VS - Python 3.6.6 из своей среды .venv. Это не имеет никакого значения.

...