Flask结构 - 无法从__init__.py导入应用程序

时间:2014-07-05 18:03:35

标签: python flask

我是python的初学者,即使在搜索了几个教程之后,我仍然在使用__init__.py设置应用程序结构时遇到了很多麻烦。

目前,我当前的目录结构如下所示

/parent
   /myapp
       __init__.py
       views.py
   /virtualenv

以前,我(如果有任何不同)

/parent
   /myapp
   /bin
   /include
   /lib

__init__.py的内容如下:

 from flask import Flask
 app = Flask(__name__)

和我的views.py

 from myapp import app
 @app.route('/')
 def test():
    return 'This is a new test'

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

如果使用init文件初始化myapp,为什么我无法将其调用到视图中?我收到一条错误消息,说明我无法导入应用,而且我没有名为myapp'的模块。如果我删除init文件并将内容复制到views.py文件的顶部,一切正常。

1 个答案:

答案 0 :(得分:7)

您使用views作为主脚本。你不能把一个脚本放在一个包里面;它所在的目录不能这样对待。 Python将parent/myapp目录添加到Python路径,而不是parent路径。

在顶层(myapp旁边)添加单独的脚本:

from myapp import app

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

并向__init__.py添加导入以导入您的观看次数:

from flask import Flask
app = Flask(__name__)

import views

并从if __name__ == '__main__':中移除views.py块。