Flask配置文件 - ' DEBUG = True'什么都不做

时间:2017-08-26 14:51:07

标签: python debugging flask

我在一个名为" MyApp"的软件包中内置了一个大型烧瓶应用程序。 (完全如下所示:http://flask.pocoo.org/docs/0.12/patterns/packages/

根据Flask文档,调试模式应启用以下功能:

  1. 它会激活调试器
  2. 它会激活自动重新加载器
  3. 它在Flask应用程序上启用调试模式。
  4. 一开始,我使用以下命令运行我的烧瓶应用程序,一切都运行正常:

    export FLASK_APP=MyApp
    export FLASK_DEBUG=1 
    flask run
    

    然后我读到了设置配置系统的正确方法(包括调试模式)。 所以我创建了以下config.py文件:

    class Config(object):
        DEBUG = False
        ...
    
    class ProductionConfig(Config):
        ...
    
    class DevelopmentConfig(Config):
        DEVELOPMENT = True
        DEBUG = True
        ...
    
    CONFIGS = {
        "development": DevelopmentConfig,
        "production": ProductionConfig,
        "default": DevelopmentConfig
    }
    

    在我的应用程序__init__.py文件中,我写道:

    app = Flask(__name__)
    config_name = os.getenv('FLASK_CONFIGURATION', 'default')
    app.config.from_object(CONFIGS[config_name])
    

    现在,要运行应用程序,我输入一个新命令:

    export FLASK_APP=MyApp
    export FLASK_CONFIGURATION=development 
    flask run
    

    不幸的是,这次调试模式根本没有激活..

    未激活调试器或自动重新加载器。 唯一改变的是app.debug现在等于True

    我没有得到它......看起来DEBUG = TRUE无法正常工作。

    你知道为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

使用调试器运行与设置DEBUG配置不同。你必须做到这两点。在开发模式下运行服务器会自动设置配置。通常,您应该依赖它,而不是直接设置配置。

"正确的配置方式"你读到的是a)只是另一种方式,而不是"正确的"方式,和b)只设置配置,而不是FLASK_ENVFLASK_DEBUG环境变量,这是控制服务器的调试模式。

设置环境变量FLASK_ENV=development告诉flask run使用调试器和重新加载器包装应用程序。 (app.run(debug=True)执行相同但不能设置FLASK_ENV,它只有一个env var。现在首选flask run命令。 app.debug会在Flask应用中切换一些内部行为,例如将错误传递给启用了开发模式的交互式调试器。