首页  >  问答  >  正文

python - Flask使用 Blueprint 出现ImportError: cannot import name 'Blueprint'?

最近新学 Flask,想尝试使用蓝图模块化应用。但甚至在运行简易 demo 时就出错。

这个简易应用有两个文件:
app.py

from flask import Flask

app = Flask(__name__)
from calendar import calendar
app.register_blueprint(calendar, url_prefix='/auth')

@app.route('/')
def hello_world():
    return 'Hello World!'


if __name__ == '__main__':
    app.run(port=8023)

calendar.py

    from flask import Blueprint
    calendar = Blueprint('calendar', __name__)
    
    
    @calendar.route('/')
    def test():
        return 'yes'

运行时出现错误:

Traceback (most recent call last):
  File "/Users/vencent/.pyenv/versions/ec-env-3.6.0/lib/python3.6/site-packages/werkzeug/http.py", line 22, in <module>
    from email.utils import parsedate_tz
  File "/Users/vencent/.pyenv/versions/3.6.0/lib/python3.6/email/utils.py", line 33, in <module>
    from email._parseaddr import quote
  File "/Users/vencent/.pyenv/versions/3.6.0/lib/python3.6/email/_parseaddr.py", line 16, in <module>
    import time, calendar
  File "/Users/vencent/PycharmProjects/untitled1/calendar.py", line 1, in <module>
    from flask import Blueprint
ImportError: cannot import name 'Blueprint'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/vencent/PycharmProjects/untitled1/untitled1.py", line 1, in <module>
    from flask import Flask
  File "/Users/vencent/.pyenv/versions/ec-env-3.6.0/lib/python3.6/site-packages/flask/__init__.py", line 17, in <module>
    from werkzeug.exceptions import abort
  File "/Users/vencent/.pyenv/versions/ec-env-3.6.0/lib/python3.6/site-packages/werkzeug/__init__.py", line 151, in <module>
    __import__('werkzeug.exceptions')
  File "/Users/vencent/.pyenv/versions/ec-env-3.6.0/lib/python3.6/site-packages/werkzeug/exceptions.py", line 71, in <module>
    from werkzeug.wrappers import Response
  File "/Users/vencent/.pyenv/versions/ec-env-3.6.0/lib/python3.6/site-packages/werkzeug/wrappers.py", line 26, in <module>
    from werkzeug.http import HTTP_STATUS_CODES, \
  File "/Users/vencent/.pyenv/versions/ec-env-3.6.0/lib/python3.6/site-packages/werkzeug/http.py", line 24, in <module>
    from email.Utils import parsedate_tz
ModuleNotFoundError: No module named 'email.Utils'

之前尝试把已有的项目用 Blueprint 模块化也是这样的提示,当时以为是跟其他代码有冲突。今天试了一下发现这个 demo 都运行不了...

迷茫迷茫2710 天前1384

全部回复(1)我来回复

  • 怪我咯

    怪我咯2017-05-18 10:54:28

    werkzeug 的版本不兼容 python 3.6? 更新一下 werkzeug 试试。

    回复
    0
  • 取消回复