【问题标题】:Flask Tutorial: Could Not Import app in Visual Studio Code 1.37.1Flask 教程:无法在 Visual Studio Code 1.37.1 中导入应用程序
【发布时间】:2019-12-22 09:06:05
【问题描述】:

我正在尝试在我的 macOS 机器上使用 Visual Studio Code 学习 Python3 / Flask。

使用:

  • macOS Mojave (10.14.6)
  • Visual Studio 代码 1.37.1
  • Python 3.7.4 64 位 (venv)

尝试了以下教程中的说明:

https://code.visualstudio.com/docs/python/tutorial-flask

  1. 在新创建的 hello_flask 文件夹中创建了一个虚拟环境:
   python3 -m venv venv
  1. 通过运行在 VS Code 中打开项目文件夹:
   code .
  1. 打开命令面板 (Shift-Cmd-P) 并输入/选择:​​i>
Python:Select Interpreter
  1. 选择 Python 3.7.4 64 位 ('venv':venv)
  2. 打开命令面板 (Shift-Cmd-P) 并输入/选择:​​i>
Terminal: Create New Integrated Terminal
  1. 使用以下命令通过 VS Code 终端安装 Flask:
pip3 install flask
  1. 新建了一个名为 app.py 的文件,输入如下源码:
from flask import Flask
app = Flask(__name__)

@app.route("/")
def home():
    return "Hello, Flask!"
  1. 尝试在 VS Code 的终端中运行它时:
(venv) user1@devbox:~/hello_flask$ python3 flask run

输出:

/Library/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python: can't open file 'flask': [Errno 2] No such file or directory
(venv) user1@devbox:~/hello_flask$
  1. 改为尝试此操作时:
(venv) user1@devbox:~/hello_flask$ flask run

输出:

 * Serving Flask app "app.py"
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
Usage: flask run [OPTIONS]

Error: Could not import "app".
  1. 甚至试过这个:
export FLASK_APP=app.py

输出:

 * Serving Flask app "app.py"
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
Usage: flask run [OPTIONS]

Error: Could not import "app".

我可能做错了什么?

官方提供的文档有问题吗

微软https://code.visualstudio.com/docs/python/tutorial-flask>?

【问题讨论】:

    标签: python-3.x flask visual-studio-code


    【解决方案1】:

    在运行flask run之前必须导出主文件名。

    export FLASK_APP=app.py
    

    看起来您的终端与app.py 不在同一目录中。

    Flask 没有找到 app.py 并引发错误。

    文档: https://flask.palletsprojects.com/en/1.0.x/quickstart/

    【讨论】:

    • 感谢您注意到这一点,但是当我将其更改为 FLASK_APP 时,它仍然存在相同的错误(只是在原始帖子中进行了编辑和修复)。
    • 在终端中运行FLASK_APP 时输出是否与导出的输出相同?
    • 是的,同样的错误输出:“错误:无法导入“应用程序”。
    • 我的意思是当你在 vscode 终端输入时FLASK_APP 的输出是什么?
    • 难道 app.py 在 hello_flask/.vscode/app.py 里面,而终端在 hello_flask/(venv) ?
    【解决方案2】:

    我在 vscode 中更新了我的 launch.json。我的 app.py 位于 src 文件夹中。我的终端总是指向 Downloads/model_api/ 而我的 app.py 在 Downloads/model_api/src/app.py 中

     "FLASK_APP": "app.py"  --> "FLASK_APP": "src/app.py"
    

    从 vscode 完成 launch.json:

        "configurations": [
        {
            "name": "Python: Flask",
            "type": "python",
            "request": "launch",
            "module": "flask",
            "env": {
                "FLASK_APP": "src/app.py", # make update here
                "FLASK_ENV": "development",
                "FLASK_DEBUG": "0"
            },
            "args": [
                "run",
                "--no-debugger",
                "--no-reload"
            ],
            "jinja": true
    

    关于launch.json in vscode的详细信息

    【讨论】:

    • VSCode 可以找到这个 app.py。但是现在 app.py 找不到与 app.py 位于同一文件夹中的其他模块。出现错误:`文件“/Users/paritosh.sumrao/source/lms/app/application.py”,第 6 行,在 中从数据库导入 db ModuleNotFoundError: No module named 'database' `
    【解决方案3】:

    类似于@Tokci(但对我不起作用)

    所以这对我有用:

    在 .vscode 目录的 launch.json 文件中,我已将名为“FLASK_APP”的环境值从“app.py”更改为我的主文件的实际名称

    "FLASK_APP": "app.py" --> "FLASK_APP": "foo.py"

    让它看起来像这样:

    "configurations": [
    
        {
            "name": "Python: Flask",
            "type": "python",
            "request": "launch",
            "module": "flask",
            "env": {
                "FLASK_APP": "foo.py",
                "FLASK_ENV": "development",
                "FLASK_DEBUG": "0"
            },
            "args": [
                "run",
                "--no-debugger"
            ],
            "jinja": true
        }
    ]
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 2018-01-08
      • 2017-09-20
      • 1970-01-01
      • 2016-10-12
      相关资源
      最近更新 更多