QuinceN
QuinceN

Reputation: 71

How to run flask shell in PyCharm?

I created new flask project in PyCharm but I can't see how to run flask shell in integrated PyCharm python console window.

Name app is not defined when start console: Name app is not defined when start console

I still can run command "flask shell" in integrated PyCharm terminal but it will start without code completion, hints, syntax checks, etc.

Flask app is defined in terminal:

Flask app is defined in terminal Is there any way to start flask shell in integrated PyCharm python console?

Upvotes: 7

Views: 5221

Answers (4)

christok
christok

Reputation: 111

This also works:

from app import app
ctx = app.test_request_context()
ctx.push()

more on the Flask docs page

Upvotes: 2

realsarm
realsarm

Reputation: 647

In my case (in my server.py I had app=Flask(__name__)) I used

from server import app
ctx = app.app_context()
ctx.push()

Then added this to File | Settings | Build, Execution, Deployment | Console | Python Console starting script

Upvotes: 2

polar9527
polar9527

Reputation: 508

Running a Shell

To run an interactive Python shell you can use the shell command:

flask shell

This will start up an interactive Python shell, setup the correct application context and setup the local variables in the shell. This is done by invoking the Flask.make_shell_context() method of the application. By default you have access to your app and g.

It's just a normal interactive Python shell with some local variables already setup for you, not an IDE editor with code completion, hints, syntax checks, etc.

Upvotes: -1

Rach Sharp
Rach Sharp

Reputation: 2444

You can use a combination of creating a request context for the Shell (which flask shell does) and a custom starting script for the PyCharm console.

Where to enter starting script in PyCharm preferences

# Step 1: acquire a reference to your Flask App instance
import app
app_instance = app.create_app()
# I return app instance from a factory method here, but might be be `app.app` for basic Flask projects

# Step 2: push test request context so that you can do stuff that needs App, like SQLAlchemy
ctx = app_instance.test_request_context()
ctx.push()

Now you should have the benefits of flask shell alongside the code completion and other benefits that IPython Shell provides, all from the default PyCharm Python Shell.

Upvotes: 13

Related Questions