Оболочке колбы не удалось найти приложение или фабрику колбы в модуле "колба" - PullRequest
0 голосов
/ 07 ноября 2019

Я изучаю «flask_web_development» в главе 7, которая инкапсулирует приложение на фабрику

def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(config[config_name])
    config[config_name].init_app(app)

    bootstrap.init_app(app)
    mail.init_app(app)
    moment.init_app(app)
    db.init_app(app)

    from .main import main as main_blueprint
    app.register_blueprint(main_blueprint)

    return app

Сообщение об ошибке при запуске оболочки фляги

   In [21]: !flask shell                    
Usage: flask shell [OPTIONS] [IPYTHON_ARGS]...

Error: Failed to find Flask application or factory in module "flask". Use "FLASK_APP=flask:name to specify one.

работа фляги работает нормально

In [19]: !export FLASK_APP=flask.py; export FLASK_DEBUG=1                          

In [20]: !flask run &                    

In [21]:  * Serving Flask app "flask.py" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 301-086-427

flask shell хорошо работают в последующих главах, которые я установил в ipython с помощью `flask-shell-ipython '

Подробности

In [26]: !export FLASK_APP=flasky.py     
In [27]: !flask shell                    
Usage: flask shell [OPTIONS] [IPYTHON_ARGS]...
Error: Failed to find Flask application or factory in module "flask". Use "FLASK_APP=flask:name to specify one.

и фляга.py

In [28]: !cat flasky.py                  
import os
import click
from flask_migrate import Migrate
from app import create_app, db
from app.models import User, Role

app = create_app(os.getenv('FLASK_CONFIG') or 'default')
migrate = Migrate(app, db)


@app.shell_context_processor
def make_shell_context():
    return dict(db=db, User=User, Role=Role)


@app.cli.command()
@click.argument('test_names', nargs=-1)
def test(test_names):
    """Run the unit tests."""
    import unittest
    if test_names:
        tests = unittest.TestLoader().loadTestsFromNames(test_names)
    else:
        tests = unittest.TestLoader().discover('tests')
    unittest.TextTestRunner(verbosity=2).run(tests)

1 Ответ

1 голос
/ 07 ноября 2019

Перед запуском фляги & вы экспортируете FLASK_APP = flask.py '

Перед «флягой» вы экспортируете FLASK_APP = flasky.py '

В именах есть различия.

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