Reputation: 71
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:
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:
Is there any way to start flask shell in integrated PyCharm python console?
Upvotes: 7
Views: 5221
Reputation: 111
This also works:
from app import app
ctx = app.test_request_context()
ctx.push()
more on the Flask docs page
Upvotes: 2
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
Reputation: 508
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
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.
# 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