AttributeError при запуске приложения фляги в оболочке фляги - PullRequest
1 голос
/ 26 октября 2019

Я закончил приложение фляги. Когда я запускаю его по python run.py, приложение может отлично работать.

Но когда я хочу открыть оболочку фляги с помощью flask shell или даже просто flask, оно говорит мне:

Traceback (most recent call last):
  File "f:\programs\anaconda\envs\web\lib\site-packages\flask\cli.py", line 556, in list_commands
    rv.update(info.load_app().cli.list_commands(ctx))
  File "f:\programs\anaconda\envs\web\lib\site-packages\flask\cli.py", line 388, in load_app
    app = locate_app(self, import_name, name)
  File "f:\programs\anaconda\envs\web\lib\site-packages\flask\cli.py", line 257, in locate_app
    return find_best_app(script_info, module)
  File "f:\programs\anaconda\envs\web\lib\site-packages\flask\cli.py", line 83, in find_best_app
    app = call_factory(script_info, app_factory)
  File "f:\programs\anaconda\envs\web\lib\site-packages\flask\cli.py", line 117, in call_factory
    return app_factory(script_info)
  File "C:\Users\zkhp\Desktop\flask-bigger-master\backend\startup.py", line 41, in create_app
    app.config['SECRET_KEY'] = config.get('secret', '!secret!')
AttributeError: 'ScriptInfo' object has no attribute 'get'

Последнее предложение здесь:

def create_app(config):
    app = Flask(
        __name__,
        template_folder=template_folder,
        static_folder=static_folder
    )
    app.config['SECRET_KEY'] = config.get('secret', '!secret!')

config - это словарь, который задается следующим образом:

def start_server(run_cfg=None, is_deploy=False):
    config = {
        'use_cdn': False,
        'debug': run_cfg.get('debug', False),
        'secret': md5('!secret!'),
        'url_prefix': None,
        'debugtoolbar': True
    }
    app = create_app(config)

Я запутался в том, как словарь configпревращается в ScriptInfo?

А что мне делать, чтобы решить проблему?

1 Ответ

0 голосов
/ 26 октября 2019

Теперь я решаю проблему.

У меня есть файл manage.py для обработки всех командных строк оболочки. Таким образом, правильная операция ввода:

python manage.py shell

И теперь она работает нормально. (Хорошо, я до сих пор не знаю, почему ……)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...