2014-12-06 77 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