【问题标题】:Issue running Flask App: create_app app.config.from_object(app_config[config_name]) KeyError: None运行 Flask 应用程序的问题:create_app app.config.from_object(app_config[config_name]) KeyError: None
【发布时间】:2019-03-26 13:08:28
【问题描述】:

我从 GitHub 下载了一个 Flask 项目。我正在尝试在 virtualenv 中运行 Flask 项目,但是当我在 virtualenv 中运行项目时,它会引发以下错误:

无 \app__init__.py",第 10 行,在 create_app app.config.from_object(app_config[config_name]) 关键错误:无

__init__.py:

from flask import Flask
from config import app_config
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate

db = SQLAlchemy()

def create_app(config_name):
    app = Flask(__name__, instance_relative_config=True)
    app.config.from_object(app_config[config_name])
    app.config.from_pyfile('config.py')
    db.init_app(app)
    migrate = Migrate(app, db)
    from app import models 
    from app.home import home as home_blueprint
    app.register_blueprint(home_blueprint)
    return app

config.py:

   class Config(object):
   class DevelopmentConfig(Config):
   DEBUG = True
   SQLALCHEMY_ECHO = True
   class ProductionConfig(Config):
   DEBUG = False

   app_config = {
        'development': DevelopmentConfig,
        'production': ProductionConfig
   }

run.py:

    import os
    from app import create_app
    config_name = os.getenv('FLASK_CONFIG')
    app = create_app(config_name)
    if __name__ == '__main__':
     app.run()

【问题讨论】:

  • config_name 没有吗?
  • 您的问题在第一句末尾缺少一个单词。是缺少单词“virtualenv”吗?
  • @karel 好的,谢谢。
  • @Ilja Everilä 我会更新我的 config.py 代码。

标签: python flask virtualenv


【解决方案1】:

我认为您在尝试运行 Flask 应用程序之前忘记设置 FLASK_CONFIG 环境变量。这将导致您的环境配置查找失败,即app_config[config_name] 将是None,因为config_name 未实例化。您可以在运行之前尝试设置环境变量吗?例如,打开您的终端并将您的 FLASK_CONFIG 环境变量设置为 development,然后尝试重新运行您的应用程序,类似于:

 # Macintosh Users
 export FLASK_CONFIG=development
 export FLASK_APP=<start_file> # <start_file> is probably run.py for the template
 flask run

 # Window Users
 set FLASK_CONFIG=development
 set FLASK_APP=run.py
 flask run

希望对您有所帮助,如果这不能解决您的问题,您能否粘贴您的文件以启动您的应用程序?这个文件大概是run.py

【讨论】:

  • 感谢您的详细解释。我正在尝试设置环境变量。我将添加正在启动应用程序的主文件。
  • 好的,所以我的解释是为什么,run.py 中的这一行:config_name = os.getenv('FLASK_CONFIG') 正在寻找环境变量 FLASK_CONFIG,以便它可以选择适当的配置。你在 Macintosh 上吗?
  • 不,我使用的是 Windows 10
  • 好的,你可以试试:set FLASK_CONFIG=development then:set FLASK_APP=run.py then:flask run 供参考:flask.pocoo.org/docs/dev/cli 看看是否可行?
  • 是的,我会尽快尝试。感谢您提供参考。
猜你喜欢
  • 1970-01-01
  • 2015-06-16
  • 2019-05-11
  • 1970-01-01
  • 2021-12-04
  • 1970-01-01
  • 2021-11-09
  • 2017-08-18
  • 2012-11-26
相关资源
最近更新 更多