我在一个名为“MyApp”的包中构建了一个大烧瓶应用程序(如下图所示):http://flask.pocoo.org/docs/0.12/patterns/packages/)
根据Flask文档,调试模式应启用以下功能:
一开始,我使用以下命令运行我的烧瓶应用程序,一切都很好:
export FLASK_APP=MyApp
export FLASK_DEBUG=1
flask run
然后我阅读了关于设置配置系统的正确方法(包括调试模式)。因此,我创建了以下配置。py文件:
class Config(object):
DEBUG = False
...
class ProductionConfig(Config):
...
class DevelopmentConfig(Config):
DEVELOPMENT = True
DEBUG = True
...
CONFIGS = {
"development": DevelopmentConfig,
"production": ProductionConfig,
"default": DevelopmentConfig
}
在我的应用程序中。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
。
我不明白。。看起来调试=TRUE工作不正常。
你知道为什么会这样吗?
使用调试器运行与设置DEBUG
配置不同。您必须两者兼而有之。在开发模式下运行服务器会自动设置配置。通常,您应该依赖它而不是直接设置配置。
您读到的“正确配置方式”是a)只是另一种方式,而不是“正确”方式,b)只设置配置,而不是FLASK_ENV
或FLASK_DEBUG
环境变量,这是控制服务器调试模式的东西。
设置环境变量FLASK\u ENV=development告诉FLASK run使用调试器和重新加载程序包装应用程序。(app.run(debug=True)
执行相同的操作,但无法设置FLASK\u ENV,它只有一个ENV变量。现在首选使用
切换Flask应用程序中的一些内部行为,例如将错误传递给启用了开发模式的交互式调试器。FLASK run
命令)<代码>应用程序。调试