[Python] Connecting flask shell

Discussão em 'Python' iniciado por Stack, Abril 17, 2025.

  1. Stack

    Stack Membro Participativo

    I am new to Flask. I have started small project using python==3.10, Flask==2.3.3, flask-shell==0.1.8, flask-sqlalchemy==3.1.1.\

    My directory:

    ├── app
    │ ├── config.py
    │ ├── service
    │ │ └── db
    │ │ └── models.py
    │ └── wsgi.py
    ├── .flaskenv
    ├── docker-compose.yaml
    ├── poetry.lock
    └── pyproject.toml


    wsgi.py

    def create_app() -> Flask:
    app = Flask(__name__)
    app.config.from_object(DevelopmentConfig())
    db.init_app(app)
    with app.app_context():
    db.create_all()
    swagger = Swagger(app)
    return app


    .flaskenv

    FLASK_APP="app/wsgi:create_app"
    FLASK_ENV="development"


    When I try to connect to flask shell

    (.venv) dverh@LAPTOP-FUCJJ30R:/mnt/c/Users/dverh/spbu-practice-web$ flask shell


    I get an error:

    Traceback (most recent call last):
    File "/mnt/c/Users/dverh/spbu-practice-web/.venv/bin/flask", line 8, in <module>
    sys.exit(main())
    File "/mnt/c/Users/dverh/spbu-practice-web/.venv/lib/python3.10/site-packages/flask/cli.py", line 1063, in main
    cli.main()
    File "/mnt/c/Users/dverh/spbu-practice-web/.venv/lib/python3.10/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
    File "/mnt/c/Users/dverh/spbu-practice-web/.venv/lib/python3.10/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
    File "/mnt/c/Users/dverh/spbu-practice-web/.venv/lib/python3.10/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
    File "/mnt/c/Users/dverh/spbu-practice-web/.venv/lib/python3.10/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
    File "/mnt/c/Users/dverh/spbu-practice-web/.venv/lib/python3.10/site-packages/click/decorators.py", line 33, in new_func
    return f(get_current_context(), *args, **kwargs)
    File "/mnt/c/Users/dverh/spbu-practice-web/.venv/lib/python3.10/site-packages/flask/cli.py", line 357, in decorator
    return __ctx.invoke(f, *args, **kwargs)
    File "/mnt/c/Users/dverh/spbu-practice-web/.venv/lib/python3.10/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
    File "/mnt/c/Users/dverh/spbu-practice-web/.venv/lib/python3.10/site-packages/flask_shell.py", line 79, in shell_command
    app.env,
    AttributeError: 'Flask' object has no attribute 'env'


    But I can't understand what is attribute 'env' and if what I've done is right.

    When i downgraded flask-shell to 0.1.3 (5 years apart), i was able to connect. I find difference between flask_shell.py 0.1.3

    from flask.globals import _app_ctx_stack
    app = _app_ctx_stack.top.app
    banner = 'Python %s on %s\nApp: %s%s\nInstance: %s' % (
    sys.version,
    sys.platform,
    app.import_name,
    app.debug and ' [debug]' or '',
    app.instance_path,
    )


    and flask_shell.py 0.1.8

    from flask.globals import _app_ctx_stack
    app = _app_ctx_stack.top.app
    banner = 'Python %s on %s\nApp: %s%s\nInstance: %s' % (
    sys.version,
    sys.platform,
    app.import_name,
    app.env,
    app.instance_path,
    )


    As I understood the FLASK_ENV variable gives us the possibility to control whether to allow DEBUG or not.

    But then the question is why I have such an error, because I've specified it at .flaskenv

    Continue reading...

Compartilhe esta Página