How can I run the fast-api server using Pycharm?
Method-1: Run FastAPI by calling uvicorn.run(...)
In this case, your minimal code will be as follows,
# main.py
import uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"Hello": "World"}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)
Normally, you'll start the server by running the following command,
python main.py
Pycharm Setup
For this setup, and now, you can set the script path in Pycharm's config
Notes
- Script Path: path to the FastAPI script
- Python Interpreter: Choose your interpreter/virtual environment
- Working Directory: Your FastAPI project root
Method-2: Run FastAPI by calling uvicorn
command
In this case, your minimal code will be as follows,
# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"Hello": "World"}
Normally, you'll start the server by running the following command,
uvicorn main:app --reload
Pycharm Setup
For this setup, and now, you can set the script path in Pycharm's config
Notes
- Module name: set to
uvicorn
- [Optional] Script: Path to
uvicorn
binary. You will get the path by executing the command,which uvicorn
, inside your environment. (See this image) - Parameters: The actual parameters of
uvicorn
command - Python Interpreter: Choose your interpreter/virtual environment
- Working Directory: Your FastAPI project root
You can do it without adding code to main.py
- In
target to run
instead ofScript path
chooseModule name
- In
Module name
typeuvicorn
- In parameters
app.main:app --reload --port 5000
Try to call uvicorn inside your code. e.g:
from fastapi import FastAPI
import uvicorn
app = FastAPI()
@app.get("/")
async def read_root():
return {"Hello": "World"}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=5000, log_level="info")
Reference