尝试运行"flask db init"时出现密钥错误



嗨,我是python的新手,我正在学习flask+python教程,但在执行命令flask db init时,它会给我以下信息:

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

最新更新