我正在尝试根据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
我做错了什么?
答案 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 是在导入的模块中定义的公共对象。