2015-07-19 47 views
0

我創建了以下簡單的Flask應用程序。當我嘗試運行它時,我得到ImportError: No module named Utils。我有一個名爲email.py的文件,如果我重命名它,錯誤消失。 python --version返回2.7。什麼導致了錯誤?爲什麼我重命名模塊時會消失?Flask應用程序在啓動時引發「ImportError:No modules named Utils」

from flask import Flask 
from flask import request 

app=Flask(__name__) 

@app.route('/',methods=['GET','POST']) 
def home(): 
return '<h1>home</h1>' 
@app.route('/signin',methods=['GET']) 
def signin_form(): 
    return '''<form action="/signin" method="post"> 
    <p><input name="username"></p> 
    <p><input name=password"> type="password"></p> 
    <p><button type="submit">Sign In</button></p> 
    </form>''' 

@app.route('/signin',methods=['POST']) 
def signin(): 

    if request.form['username']=='admin' and request.form['password']=='password': 
     return '<h3>hello ,admin!<h3>' 
    return '<h3>bad username or password</h3>' 

if __name__=='__main__': 
    app.run() 
Traceback (most recent call last): 
    File "D:/learn/suojin.py", line 5, in <module> 
    from flask import Flask 
    File "C:\Python27\lib\site-packages\flask-0.10.1-py2.7.egg\flask\__init__.py", line 17, in <module> 
    from werkzeug.exceptions import abort 
    File "C:\Python27\lib\site-packages\werkzeug\__init__.py", line 154, in <module> 
    __import__('werkzeug.exceptions') 
    File "C:\Python27\lib\site-packages\werkzeug\exceptions.py", line 71, in <module> 
    from werkzeug.wrappers import Response 
    File "C:\Python27\lib\site-packages\werkzeug\wrappers.py", line 26, in <module> 
    from werkzeug.http import HTTP_STATUS_CODES, \ 
    File "C:\Python27\lib\site-packages\werkzeug\http.py", line 24, in <module> 
    from email.Utils import parsedate_tz 
ImportError: No module named Utils 
+4

這可能是因爲在構建應用程序時使用了燒瓶模塊中的「email」類。如果您的應用程序腳本具有相同的名稱,那麼Python將會感到困惑。我只是從你的回溯的最後一行,'from email.Utils import parsedate_t' –

+0

是的,當我重命名它時,它消失 – gpguo

+0

我的意思是說,電子郵件包和Utils模塊,而不是電子郵件類,但我希望一切都能爲你改寫腳本。 –

回答

0

好了,所以它看起來像有一個與你的腳本命名email.py命名衝突。 Python中有一個名爲email的軟件包,其模塊爲Utils。當Python搜索這個包時,它首先在它的路徑中找到你的腳本,所以它抓住它並嘗試導入Utils模塊,但找不到它。只需將您的自定義腳本重命名爲email1.py,Email.py或除email.py以外的其他任何內容即可。