简体   繁体   中英

I get KeyError when trying to run "flask db init"

Hi I am new to python and I am following a flask + python tutorial but when executing the command flask db init it gives me this:

Traceback (most recent call last):
  
File "/home/pi/.local/bin/flask", line 10, in <module>
    sys.exit(main())
  
File "/home/pi/.local/lib/python2.7/site-packages/flask/cli.py", line 967, in main
    cli.main(args=sys.argv[1:], prog_name="python -m flask" if as_module else None)
  
File "/home/pi/.local/lib/python2.7/site-packages/flask/cli.py", line 586, in main
    return super(FlaskGroup, self).main(*args, **kwargs)
  
File "/home/pi/.local/lib/python2.7/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  
File "/home/pi/.local/lib/python2.7/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  
File "/home/pi/.local/lib/python2.7/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
 
File "/home/pi/.local/lib/python2.7/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  
File "/home/pi/.local/lib/python2.7/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  
File "/home/pi/.local/lib/python2.7/site-packages/click/decorators.py", line 21, in new_func
    return f(get_current_context(), *args, **kwargs)
  
File "/home/pi/.local/lib/python2.7/site-packages/flask/cli.py", line 425, in decorator
    with __ctx.ensure_object(ScriptInfo).load_app().app_context():
  
File "/home/pi/.local/lib/python2.7/site-packages/flask/cli.py", line 388, in load_app
    app = locate_app(self, import_name, name)
  
File "/home/pi/.local/lib/python2.7/site-packages/flask/cli.py", line 240, in locate_app
    __import__(module_name)
  
File "/home/pi/ACSD/run.py", line 6, in <module>
    app = create_app(config_name)
  
File "/home/pi/ACSD/app/__init__.py", line 12, in create_app
    app.config.from_object(app_config[config_name])

KeyError: None

This is the content of the __init__.py file:

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

db = SQLAlchemy()
login_manager = LoginManager()

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)
    login_manager.init_app(app)
    login_manager.login_message = "You must be logged in to access this page."
    login_manager.login_view = "auth.login"
    migrate = Migrate(app, db)

    from app import models

    return app

This is the content of the run.py file

import os

from app import create_app

config_name = os.getenv('FLASK_CONFIG')
app = create_app(config_name)


if __name__ == '__main__':
    app.run()

All help is appreciated

In your .env file, you need to instantiate your variable:

# .env

FLASK_CONFIG=<your-value>

Make sure to install python-dotenv to help load this environment variable:

(venv)$ pip3 install python-dotenv

In run.py , load your environment variable:

# run.py

# Your previous imports
from dotev import load_dotenv

load_dotenv('.env')

config_name = os.getenv('FLASK_CONFIG')
app = create_app(config_name)


if __name__ == '__main__':
    app.run()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM