首页 > 解决方案 > Flask 无法在调试模式下重新启动,并且 Visual Studio 2019 中不支持颜色输出

问题描述

我使用 Visual Studio 2017 作为我的小型 Flask 项目的 IDE,但是当我尝试升级到 VS2019 时,它不再启动,Python 控制台卡在

 * Serving Flask app "flask_vs2019" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Restarting with stat

然后我通过 VS2019 向导创建了一个新的 Flask 项目,添加了 debug=True 并且它在重新启动时卡住了。启动代码如下所示:

import os
from flask_vs2019 import app

if __name__ == '__main__':

    HOST = os.environ.get('SERVER_HOST', 'localhost')
    try:
        PORT = int(os.environ.get('SERVER_PORT', '5555'))
    except ValueError:
        PORT = 5555
    app.run(HOST, PORT, debug=True)

我尝试了多种解决方法,我很确定这是 VS 2019 的问题。Flask 在以下情况下工作:

  1. 使用具有完全相同代码的 VS 2017
  2. 使用 cmd 控制台并通过 flask runor启动python -m flask run
  3. use_reloader=False使用or关闭重新加载器DEBUG=False,这是不可接受的,因为每当您更改代码时都必须重新启动 Flask。

Flask 在以下情况下不起作用:

  1. 对任何版本的 Flask 和 werkzeug 使用 VS 2019 (16.7)
  2. 设置FLASK_ENV=development和/或DEBUG=True作为环境变量
  3. 在虚拟环境中安装看门狗包

事实上,我发现早在 2020 年 3 月就在Visual Studio 开发者社区上报告了完全相同的问题,但是“这个问题没有太多的产品团队活动和非常少量的新投票或评论。基于此,它的严重性和受影响的地区,根据我的经验,这个问题不太可能得到解决”。好吧,我想我现在必须坚持使用 VS 2017。

即使我关闭了调试模式,Python 控制台仍然无法正常工作,因为颜色输出被破坏了。

127.0.0.1 - - [08/Aug/2020 13:59:02] "[37mGET / HTTP/1.1[0m" 200 -
127.0.0.1 - - [08/Aug/2020 13:59:02] "[37mGET /static/content/bootstrap.min.css HTTP/1.1[0m" 200 -
127.0.0.1 - - [08/Aug/2020 13:59:02] "[37mGET /static/content/site.css HTTP/1.1[0m" 200 -
127.0.0.1 - - [08/Aug/2020 13:59:03] "[33mGET /favicon.ico HTTP/1.1[0m" 404 -

使用 colorama 设置colorama.init(autoreset=True)将无法解决。在 VS2017 中,不需要任何解决方法,颜色输出就可以正常工作。

标签: pythonvisual-studioflask

解决方案


推荐阅读