如何在重组后作为包运行flask app

时间:2016-01-28 20:20:35

标签: python flask

enter image description here

我正在尝试根据http://flask.pocoo.org/docs/0.10/patterns/packages/将烧瓶应用重构为包。我的应用基于http://code.tutsplus.com/tutorials/intro-to-flask-signing-in-and-out--net-29982。我现在已将其更改为上面的屏幕截图,并尝试在命令行运行。

runserver.py:

from app import intro_to_flask

if __name__ == '__main__':
    intro_to_flask.routes.run(debug=True)

在命令行:

/mini/app (master) $ python runserver.py
Traceback (most recent call last):
  File "runserver.py", line 1, in <module>
    from app import intro_to_flask
ImportError: No module named app

我做错了什么?

2 个答案:

答案 0 :(得分:1)

如果我正确阅读您发布的链接,并假设您已在intro_to_flask文件夹中正确设置from intro_to_flask import app,我相信您正在寻找__init__.py

答案 1 :(得分:1)

由于Flask文档在Flask应用程序的子目录中只提到了一个__init__.py文件而且你有两个,我认为你对__init__.py文件以及使用进口。在您的情况下,带有Flask应用程序的子目录是intro_to_flask。

基本上它的工作原理如下:from <module> import <object>

模块是.py文件,对象在模块内定义。在这种特殊情况下,有一个__init__.py文件,因此您必须引用的模块具有包含__init__.py文件的目录的名称。

假设您的app/intro_to_flask/__init__.py看起来像这样:

from flask import Flask
app = Flask(__name__)

import intro_to_flask.routes

您的app/runserver.py应如下所示:

from intro_to_flask import app
app.run(debug=True)

intro_to_flask 是导入的模块, app 是在导入的模块中定义的公共对象。