Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
662 views
in Technique[技术] by (71.8m points)

python - Flask CLI shows "TypeError: exceptions must derive from BaseException"

When I run Flask from the terminal with flask run, if my code has an error I see "TypeError: exceptions must derive from BaseException" instead of the actual error. To debug it I need to open the browser and inspect the exc_info variable in the Werkzeug debugger, which is not convenient. Why is Flask doing this? How can I see the actual error in the terminal?

$ FLASK_APP=example flask run

Traceback (most recent call last):
  File "[...]/lib/python3.9/site-packages/flask/cli.py", line 356, in __call__
    self._flush_bg_loading_exception()
  File "[...]/lib/python3.9/site-packages/flask/cli.py", line 344, in _flush_bg_loading_exception
    raise exc_info
TypeError: exceptions must derive from BaseException
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

This is a bug introduced in Flask 2.0 that will be fixed when Flask 2.0.2 is released. The CLI was incorrectly re-raising sys.exc_info() instead of only the exception object. Until then, you can turn off lazy loading by running with flask run --eager-loading.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...