You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从命令行运行存放在app.py而非__init__.py中的Flask应用工厂

解决方案
  • 首先修正现有配置的两个错误:
    1. 你当前settings.py中的SECRET_KEY = mysecretkey缺少字符串引号,运行时会触发NameError,需要修改为SECRET_KEY = 'mysecretkey'
    2. 你代码中app.config.from_object('config.settings')会默认从config包下加载配置,如果你根目录的settings.py没有放在config文件夹中,需要把这行修改为app.config.from_object('settings')
  • 再修改FLASK_APP配置值:
    要指定调用app包下app.py模块内的create_app工厂函数,把settings.py中的FLASK_APP配置修改为:
    FLASK_APP = app.app:create_app()
    
    其中app.app代表app包下的app.py模块,冒号后面的create_app()表示执行该工厂函数,返回Flask应用实例。
  • 临时指定的终端命令(可选):
    如果你不想修改配置文件,也可以在执行flask run前,在终端临时设置环境变量:
    • Linux/macOS:export FLASK_APP=app.app:create_app()
    • Windows cmd:set FLASK_APP=app.app:create_app()
    • Windows PowerShell:$env:FLASK_APP = "app.app:create_app()"

原配置不生效的原因

之前设置FLASK_APP=app时,Flask会默认在app包的__init__.py文件中查找app实例或者create_app工厂函数,所以把工厂移到__init__.py就能正常运行;而你设置FLASK_APP=app:app时,是指定查找app包下名为app的实例,你并没有在app包的__init__.py中定义该实例,自然无法加载成功。

内容的提问来源于stack exchange,提问作者Jonathan Bechtel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:27:01