["python","fastapi","uvicorn"]
FastAPI throws an error (Error loading ASGI app. Could not import module "api")

I tried to run FastAPI using uvicorn webserver but it throws an error. I run this command, uvicorn api:app --reload --host 0.0.0.0 but there is an error in the terminal. Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) Started reloader process [23445] Error loading ASGI app. Could not import module "api". Stopping reloader process [23445]
TL;DR Add the directory name in front of your filename uvicorn src.main:app or cd into that directory cd src uvicorn main:app Long Answer It happens because you are not in the same folder with your FastAPI app instance more specifically: Let's say i have an app-tree like this; my_fastapi_app/ ├── app.yaml ├── docker-compose.yml ├── src │ └── main.py └── tests ├── test_xx.py └── test_yy.py $ pwd # Present Working Directory /home/yagiz/Desktop/my_fastapi_app I'm not inside the same folder with my app instance, so if I try to run my app with uvicorn I'll get an error like yours $ uvicorn main:app --reload INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) INFO: Started reloader process [40645] using statreload ERROR: Error loading ASGI app. Could not import module "main". The answer is so simple, add the folder name in front of your filename uvicorn src.main:app --reload or you can change your working directory cd src Now i'm inside of the folder with my app instance src └── main.py Run your uvicorn again $ uvicorn main:app --reload INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) INFO: Started reloader process [40726] using statreload INFO: Started server process [40728] INFO: Waiting for application startup. INFO: Application startup complete.