无法导入模块以启动基本的Flask应用

时间:2019-05-09 15:54:47

标签: flask

因此,我正在关注有关Flask的初学者教程,无论出于何种原因,在本质上第一步上都会出现错误。

我首先创建了一个“ app”目录,在其中为“ init .py”创建了一个python文件,其中包含以下代码:

from flask import Flask

app = Flask(__name__)

from app import routes

然后我在同一目录中创建了一个“ routes.py” python文件:

from app import app


@app.route('/')
@app.route('/index')
def index():
    return "Hello, World!"

最后(这是问题的根源),我创建了一个名为“ microblog.py”的python文件,该文件与“ app”目录位于同一文件夹中:

from app import app

然后我进入虚拟环境并运行(使用cmd Windows):

set FLASK_APP=microblog.py

到目前为止很好,但是当我尝试在cmd中运行以下代码时:

flask run

我收到以下错误:

ImportError: cannot import name 'app' from 'app' (C:\Users\Grae_\microblog\app\__init__.py)

如果需要进一步说明,这是我的文件位置:

C:\Users\Grae_\microblog
C:\Users\Grae_\microblog\app
C:\Users\Grae_\microblog\__init__.py
C:\Users\Grae_\microblog\routes.py
C:\Users\Grae_\microblog\venv
C:\Users\Grae_\microblog\microblog.py

很抱歉,如果这真的很明显,我对Flask显然很陌生,并且已经坚持了一段时间。

谢谢

2 个答案:

答案 0 :(得分:0)

这里的问题在python包“ app”上。该目录应该有一个名为__init__.py的文件,而不是init.py

例如,您将文件init.py重命名为__init__.py,并用下面的代码替换内容,

from flask import Flask

app = Flask(__name__)


def start():
    from app import routes


start()

答案 1 :(得分:0)

您可以执行以下操作:-

test.py

from flask import Flask
app = Flask(__name__)

@app.route("/")
def index():
    return "Index!"

@app.route("/hello")
def hello():
    return "Hello World!"

@app.route("/members")
def members():
    return "Members"

@app.route("/members/<string:name>/")
def getMember(name):
    return name</string:name>

if __name__ == "__main__":
    app.run()

在命令提示符下,运行命令-

python test.py 

在浏览器中尝试网址:

http://127.0.0.1:5000/

http://127.0.0.1:5000/hello

http://127.0.0.1:5000/members

http://127.0.0.1:5000/members/Karan/