簡體   English   中英

嘗試運行“flask db init”時出現 KeyError

[英]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

這是__init__.py文件的內容:

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

這是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()

感謝所有幫助

在您的.env文件中,您需要實例化您的變量:

# .env

FLASK_CONFIG=<your-value>

確保安裝python-dotenv以幫助加載此環境變量:

(venv)$ pip3 install python-dotenv

run.py中,加載您的環境變量:

# 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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM