2016-11-21 51 views
0

建設有從燒瓶教程說明一個小應用程序聯機之後,我不斷收到這樣的ImportError:如何解決這個阻止我的代碼執行的ImportError?

eloiim:~ iivri.andre$ export FLASK_APP=Minimalapp.py 
eloiim:~ iivri.andre$ flask run 
Traceback (most recent call last): 
    File "/usr/local/bin/flask", line 11, in <module> 
    sys.exit(main()) 
    File "/usr/local/lib/python2.7/site-packages/flask/cli.py", line 478,in main 
    cli.main(args=args, prog_name=name) 
    File "/usr/local/lib/python2.7/site-packages/flask/cli.py", line 345, in main 
    return AppGroup.main(self, *args, **kwargs) 
    File "/usr/local/lib/python2.7/site-packages/click/core.py", line 696, in main 
    rv = self.invoke(ctx) 
    File "/usr/local/lib/python2.7/site-packages/click/core.py", line 1060, in invoke 
    return _process_result(sub_ctx.command.invoke(sub_ctx)) 
    File "/usr/local/lib/python2.7/site-packages/click/core.py", line 889, in invoke 
    return ctx.invoke(self.callback, **ctx.params) 
    File "/usr/local/lib/python2.7/site-packages/click/core.py", line 534, in invoke 
    return callback(*args, **kwargs) 
    File "/usr/local/lib/python2.7/site-packages/click/decorators.py", line 64, in new_func 
    return ctx.invoke(f, obj, *args[1:], **kwargs) 
    File "/usr/local/lib/python2.7/site-packages/click/core.py", line 534, in invoke 
    return callback(*args, **kwargs) 
    File "/usr/local/lib/python2.7/site-packages/flask/cli.py", line 388, in run_command 
    app = DispatchingApp(info.load_app, use_eager_loading=eager_loading) 
    File "/usr/local/lib/python2.7/site-packages/flask/cli.py", line 124, in __init__ 
    self._load_unlocked() 
    File "/usr/local/lib/python2.7/site-packages/flask/cli.py", line 148, in _load_unlocked 
    self._app = rv = self.loader() 
    File "/usr/local/lib/python2.7/site-packages/flask/cli.py", line 209, in load_app 
    rv = locate_app(self.app_import_path) 
    File "/usr/local/lib/python2.7/site-packages/flask/cli.py", line 89, in locate_app 
    __import__(module) 
ImportError: No module named Minimalapp.py 

這是我的代碼:

from flask import Flask 
app = Flask(__name__) 

@app.route('/') 
def IsSelf() : 
    return 'Hello 這是自' 

這裏是我的LS-R輸出也

eloiim:learnFlasC iivri.andre$ ls 
Hello.py  Minimalapp.py 
Http.py   resource_locator.py 

我不知道我做錯了什麼。有什麼問題,我該如何解決它?

+1

這將是有益的,如果您還包括'ls'輸出顯示出'Minimalapp.py',與確切名稱,存在於當前目錄中。 (令人驚訝的是...... Flask文檔告訴你在'FLASK_APP'中包含'.py'擴展名,但是隨後調用'__import__',因爲它需要* module *名稱而不是*文件*名稱,這意味着'.py'擴展名不應該存在;如果你的文件名是'Minimalapp.py',那麼模塊名稱將是'Minimalapp')。 –

+0

@CharlesDuffy 'eloiim:learnFlasC iivri.andre $ ls' 'Hello.py' \t \t'Minimalapp.py' 'Http.py' \t \t \t'resource_locator.py' 這是LS輸出。忽略其他文件 – siur

+0

我建議您在代碼中使用「flask.run()」運行燒瓶以獲取更多信息,儘管這不是一個好習慣。 –

回答

0

要使用燒瓶CLI

在命令行中,導航到該文件夾​​與您的項目,然後運行:

export FLASK_APP=hello.py 
flask run 

注意你所需要的「 py」爲。應用程序運行腳本的名稱應該是包含代碼的腳本。在教程hello.py中,但是你可能被稱爲MinimalApp.py或類似的。您需要有一個新的Flask版本,0.11或更高版本,因爲此cli是一項新功能。

使用app.run(),而不是新瓶的CLI

首先,你的文件夾中擺脫所有的東西或者開始一個新的文件夾。接下來,請確保您可以(在終端鍵入「蟒蛇」來訪問REPL)沒有任何錯誤,運行

import flask 
在Python REPL

。創建一個名爲run.py的文件並粘貼以下內容:

保存。在你的終端,導航到包含文件的文件夾,然後運行

python run.py 
+0

什麼是'REPL'? – wallyk

+0

在命令行中鍵入「python」。你會看到>>>。這是REPL。 –

+0

@ T.Arboreus它確實有效。謝謝。問題:我正在做燒瓶教程,並按照如何運行該程序的說明進行操作; '$ export FLASK_APP = Minimalapp.py','flask run'然而我得到了之前發佈的錯誤。爲什麼會這樣? – siur

相關問題