出口FLASK_CONFIG ='开发'在heroku上

时间:2015-03-10 11:25:07

标签: python heroku flask

在我的烧瓶中运行

我运行命令export FLASK_CONFIG='development' 本地运行应用程序。但是现在在heroku中运行命令heroku run init时得到错误,我知道我应该导入导出FLASK_CONFIG ='开发但是我怎么能在heroku中做

错误:

(venv)peg@peg:~/Fast-monks$ heroku run python manage.py shell
Running `python manage.py shell` attached to terminal... up, run.6078
postgres://fboastbcwkwdsa:bIrdHsid_Zv3GOzyrhCB9x1oig@ec2-174-129-1-179.compute-1.amazonaws.com:5432/dfg3hpuotv5lal
postgres://fboastbcwkwdsa:bIrdHsid_Zv3GOzyrhCB9x1oig@ec2-174-129-1-179.compute-1.amazonaws.com:5432/dfg3hpuotv5lal
Traceback (most recent call last):
  File "manage.py", line 9, in <module>
    app = create_app(os.environ['FLASK_CONFIG'] or 'default')
  File "/app/.heroku/python/lib/python2.7/UserDict.py", line 23, in __getitem__
    raise KeyError(key)
KeyError: 'FLASK_CONFIG'
WARNING: Toolbelt v3.28.4 update available.

manage.py:

app = create_app(os.environ['FLASK_CONFIG'] or 'default')
magrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)

config.py:

class Config(object):
    DEBUG = False
    SECRET_KEY = 'Thisismysecretkey'
    SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL',
             'postgresql+psycopg2://peg:1234@localhost/app')
    print SQLALCHEMY_DATABASE_URI


class HerokuConfig(ProductionConfig):
    def init_app(cls, app):
        ProductionConfig.init_app(app)
        import logging
        from logging import StreamHandler
        file_handler = StreamHandler()
        file_handler.setLevel(logging.WARNING)
        app.logger.addHandler(file_handler)


config = {
    'development': DevelopmentConfig,
    'testing': TestingConfig,
    'production': ProductionConfig,
    'heroku': HerokuConfig,
    'default': DevelopmentConfig}

1 个答案:

答案 0 :(得分:2)

您应该通过heroku命令设置环境变量:

heroku config:set FLASK_CONFIG=development

虽然你的manage.py看起来不对,但你似乎试图在var不存在的情况下设置默认值,但是在它变为默认值之前会引发keyerror。请改用:

app = create_app(os.environ.get('FLASK_CONFIG', 'default'))