2015-10-04 60 views
0

我是一個初學者Flask,我正在嘗試創建一個簡單的hello world程序,但它每次都會給我提供錯誤Undefined variable from import: run我的餵你世界燒瓶程序沒有運行?

這裏是我的目錄樣子:

/MyApplicationName: 
     /app 
      /__init__.py 
      /views.py 
      /run.py 

__init__.py是:

from flask import Flask 
app = Flask(__name__) 

import views 

這裏是我的views.py

from app import app 

@app.route("/") 
@app.route("/index") 
def main(): 
    return "Hello Flask!!" 

這是我的最後一個run.py

from app import app 

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

它給了我這個錯誤每次:

Undefined variable from import: run

幫助將不勝感激

+1

這裏'app'是包的名稱! –

回答

0

移動:

from flask import Flask 
app = Flask(__name__) 

到views.py中。然後,讓__init__.py

from views import app 

你有一個圓形的進口,但我不能完全肯定,爲什麼它拋出它拋出的錯誤。

+0

將應用程序對象放入視圖看起來很奇怪,因爲視點是將路徑放在單獨的模塊上。 – juanchopanza

+0

同意。此外,下面指出了'app /'下的'run.py',它也不正確。我通常在應用程序中使用if __name__ =='__main__':app.run('0.0.0.0',8080)'。我認爲你也可以在'app.py'中的'views.py'和'import views'中使用'app = Flask(__ name __)'或'app = flask.Flask(__ name __)'......不知道它是不是最佳做法甚至是正確的。不過,我會稍後嘗試並報告。 –

0

看看flask-script,無論如何評估使用工廠,像create_app(),返回一個應用程序對象。 似乎使用瓶時是常見的做法:

def create_app(): 
    app = Flask(
     'portal', static_folder='static/build', static_url_path='/static' 
    ) 

    init_config(app) 
    init_login(app) 
    init_csrf(app) 

    app.register_blueprint(views) 

    return app 
0

沒有改變你編碼什麼單行線,只需移動run.py出來的應用程序目錄。

項目目錄應該看起來那麼像這樣:

└── MyApplication 
├── __init__.py 
├── app 
│   ├── __init__.py 
│   ├── views.py 
└── run.py 

快樂編碼,

J.

相關問題