2015-07-19 43 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以外的其他任何内容即可。