我运行命令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}
答案 0 :(得分:2)
您应该通过heroku
命令设置环境变量:
heroku config:set FLASK_CONFIG=development
虽然你的manage.py看起来不对,但你似乎试图在var不存在的情况下设置默认值,但是在它变为默认值之前会引发keyerror。请改用:
app = create_app(os.environ.get('FLASK_CONFIG', 'default'))