无法在Windows上的Visual Studio代码中调试flask应用程序

2024-09-30 18:19:27 发布

您现在位置:Python中文网/ 问答频道 /正文

在Visual Studio代码中调试flask应用程序时遇到一些问题

我已经为flask应用程序配置了启动设置,并且在本地工作时正在运行Python 3.6虚拟环境

我希望能够实时观察变量等,因此希望这将是相当简单的,但由于某种原因,当我按下“运行并调试”按钮时,我的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的导入代码(model是一个本地模块,所以只需另一个.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

下面是我如何配置launch.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路径和linting路径的方式:

{
    "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 Code-Python3.6.6中从.venv环境中选择了正确的解释器。这没什么区别


Tags: frompyimportappflasksourcemodelvenv