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

use*_*731 4 python flask

我是python的初学者,__init__.py即使在搜索了几个教程后,我也很难设置应用程序的结构.

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

/parent
   /myapp
       __init__.py
       views.py
   /virtualenv
Run Code Online (Sandbox Code Playgroud)

以前,我有(如果它有任何区别)

/parent
   /myapp
   /bin
   /include
   /lib
Run Code Online (Sandbox Code Playgroud)

内容__init__.py如下:

 from flask import Flask
 app = Flask(__name__)
Run Code Online (Sandbox Code Playgroud)

和我的views.py

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

 if __name__ == '__main__':
    app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

如果myapp正在使用init文件初始化,为什么我不能将它调用到视图中?我收到一条错误,指出"我无法导入应用程序,而且我没有名为myapp的模块".如果我删除init文件并将内容复制到views.py文件的顶部,一切正常.

Mar*_*ers 7

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

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

from myapp import app

if __name__ == '__main__':
    app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

并添加导入__init__.py以导入您的视图:

from flask import Flask
app = Flask(__name__)

import views
Run Code Online (Sandbox Code Playgroud)

if __name__ == '__main__':从中删除块views.py.