2014-12-06 58 views
1

我在烧瓶应用程序的工作后,导入模块和我有以下目录结构:甚至无法添加__init__.py

flask_app/ 
| 
|-- __init__.py 
|-- app.py 
|-- views.py 
|-- static/ 
|-- templates/ 
文件

示例内容是:

app.py:

from flask import Flask 
import views 

app = Flask(__name__) 

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

views.py:

from app import app 

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

__init__.py文件为空。

当我运行应用程序时,服务器启动,但索引页404的。我知道我需要一个__init__.py文件来导入工作,所以views.py文件不被导入?

回答

2

您正在运行一个循环导入。当app.py导入views时,app.py的处理暂停,而views.py处理。 views.py的第一件事是从app.py导入app,但app尚未定义,因此导入app.py。这暂停了views.py的处理并开始处理app.py。等

Flask documentation提供了一个解决方案。

app.py

from flask import Flask 

flask = Flask(__name__) 

import views 

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

views.py

from app import app 

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

编辑:寻找到烧瓶中的文档,加入run.py到目录上述flask_app和重命名app.py到__init__.py导致问题被解决了。

run.py

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

的目录结构如下内容:内部if_name ==主要将在此情况下,文件被运行的脚本,而不是进口的执行

|run.py 
|flask_app/ 
| 
|-- __init__.py 
|-- app.py 
|-- views.py 
|-- static/ 
|-- templates/ 
+0

谢谢运行,你的答案指出我的方向正确。我必须在'flask_blog'上面的目录中创建一个单独的run.py文件,并将'app.py'重命名为'__init __。py',以便它能够工作,但最终它却做到了。你能编辑你的答案来反映这个小变化吗? – Bhargav 2014-12-06 18:21:41

+0

感谢您的编辑。 – dirn 2014-12-06 19:54:01

0

代码。

这里是如何为我的作品:

结构:

- >计算器(项目文件夹)

---->计算器(包文件夹)

--- -----> _ _init___.py

--------> views.py

--------> createdb.py

----> runserver。PY

初始化的.py脚本

from flask import Flask 

app = Flask(__name__) 
app.config.update(DEBUG=True) 

import createdb 
import views 

runserver.py脚本

#!/usr/bin/python 

from calculator import app 

app.run() 

和应用程序通过命令行通过调用runserver.py