Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

5.3K
Vistas
FastAPI arroja un error (Error al cargar la aplicación ASGI. No se pudo importar el módulo "api")

Traté de ejecutar FastAPI usando el servidor web uvicorn pero arroja un error.

Ejecuto este comando,

uvicorn api:app --reload --host 0.0.0.0

pero hay un error en la 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]

Agradezco mucho cualquier recomendación o sugerencia

over 4 years ago · Santiago Trujillo
9 Respuestas
Responde la pregunta

0

su error tipográfico en "api" verifique su nombre de archivo.

over 4 years ago · Santiago Trujillo Denunciar

0

TL;DR

Agregue el nombre del directorio delante de su nombre de archivo

 uvicorn src.main:app

o cd en ese directorio

 cd src uvicorn main:app

Respuesta larga

Ocurre porque no está en la misma carpeta con su instancia de la aplicación FastAPI más específicamente:

Digamos que tengo un árbol de aplicaciones como este;

 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

No estoy dentro de la misma carpeta con la instancia de mi aplicación, por lo que si intento ejecutar mi aplicación con uvicorn, obtendré un error como el tuyo.

 $ 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".

La respuesta es muy simple, agregue el nombre de la carpeta delante de su nombre de archivo

 uvicorn src.main:app --reload

o puede cambiar su directorio de trabajo

 cd src

Ahora estoy dentro de la carpeta con la instancia de mi aplicación.

 src └── main.py

Ejecuta tu uvicornio de nuevo

 $ 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.
over 4 years ago · Santiago Trujillo Denunciar

0

Tuve el mismo problema y lo resolví agregando el nombre del paquete antes de main, en tu caso probando:

 uvicorn src.main:app --reload

puede resolver el problema

over 4 years ago · Santiago Trujillo Denunciar

0

Esto funcionó para mí, mire los documentos para fastAPI. Estoy muy agradecido de haberlo encontrado, ya que el script de Python debe llamarse main.py no app.py

El comando uvicorn main:app se refiere a:

  1. main : el archivo main.py (el "módulo" de Python).
  2. app : el objeto creado dentro de main.py con la línea app = FastAPI()
  3. --reload : hace que el servidor se reinicie después de cambios en el código. Uso exclusivo para desarrollo.
over 4 years ago · Santiago Trujillo Denunciar

0

Una razón por la que esto podría estar sucediendo es que está utilizando:

 uvicorn src/main:app --reload

en lugar de la sintaxis correcta :

 uvicorn src.main:app --reload

Note el . en lugar de la /


Eso suponiendo que (1) su estructura sea algo como esto:

 project_folder/ ├── some_folder ├── src │ └── main.py └── tests ├── test_xx.py └── test_yy.py

(2) que su objeto FastAPI() está efectivamente asignado a un objeto llamado app en main.py :

 app = FastAPI()

(3) está ejecutando el comando uvicorn desde project_folder , por ejemplo:

 (venv) <username>@<pcname>:~/PycharmProjects/project_folder$ uvicorn src.main:app --reload
over 4 years ago · Santiago Trujillo Denunciar

0

Parece que es importante que nombre su archivo main.py, de lo contrario no funcionará.

Editar: en realidad, estaba ejecutando Jupyter Notebook en el puerto 8888, por lo que ese puerto ya estaba ocupado. Si tiene que ejecutar el cuaderno Jupyter, ejecútelo después de ejecutar el servidor API, el cuaderno se ejecutará automáticamente en 8889. Alternativamente, puede ejecutar el servidor API en un puerto diferente.

over 4 years ago · Santiago Trujillo Denunciar

0

Presione el botón Guardar en VS Code, etc. porque a veces arrojará este error si no ha guardado el archivo. Me sucedió.

over 4 years ago · Santiago Trujillo Denunciar

0

mover la declaración de importación para FastAPI a la parte superior de las declaraciones de importación corrige el error.

from fastapi import FastAPI "luego cualquier otra declaración de importación"

over 4 years ago · Santiago Trujillo Denunciar

0

Use esta estructura de carpetas y configuración donde main está en el directorio principal ingrese la descripción de la imagen aquí

lanzamiento.json

 { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Python: FastAPI", "type": "python", "request": "launch", "module": "uvicorn", "args": [ "main:app" ], "jinja": true } ] }

principal.py

 from fastapi import FastAPI app = FastAPI( title="test", description="test", version="0.0.1", ) if __name__ == "__main__": import uvicorn uvicorn.run( "main:app", host="0.0.0.0", reload=True, port=3001, )
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda