Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

225
Visualizações
FastAPI dice que falta el nombre de la carpeta como módulo

Tengo una pregunta relacionada con FastAPI con uvicorn en pycharm. Mi proyecto tiene la siguiente estructura:

 LearningPy <folder name> | |-- apis <folder name> -----|--modelservice <folder name> ---------|--dataprovider.py ---------|--main.py ---------|--persondetails.py -----|--config.py

Primero estaba usando la siguiente ruta: D:\Learnings\apis y ejecuté el siguiente código: uvicorn main:app --reload luego estaba dando error:

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

Sin embargo, después de leer la sugerencia de aquí , cambié la ruta a D:\Learnings\apis\modeservice y el error anterior desapareció, pero ahora comenzó a arrojar un error diferente: ModuleNotFoundError: No module named 'apis'

Aquí están mis archivos de código main.py y config.py:

principal.py --

 import uvicorn from fastapi import FastAPI from starlette.middleware.cors import CORSMiddleware from datetime import datetime from apis import config from apis.modelservice import dataprovider app = FastAPI(debug=True) def get_application() -> FastAPI: application = FastAPI(title="PersonProfile", description="Learning Python CRUD",version="0.1.0") origins = [ config.API_CONFIG["origin_local_ip"], config.API_CONFIG["origin_local_url"] ] application.add_middleware( CORSMiddleware, allow_origins=origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) #application.include_router(processA.router) return application app = get_application() @app.get("/") def read_root(): return {"main": "API Server " + datetime.now().strftime("%Y%m%d %H:%M:%S")} @app.get("/dbcheck") def read_root(): try: dataprovider.get_db().get_collection("Person") except Exception as e: return {"failed":e} else: return { "connected":True} if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=8000, reload=True)

Y aquí está config.py--

 API_CONFIG = { "origin_local_ip": "http://127.0.0.1:3000", "origin_local_url": "http://localhost:3000" }

Este proyecto se está construyendo sobre React+Mongo+python (pymongo para conectar mongodb).

Gracias por adelantado.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

El problema en su aplicación es la organización de su módulo, primero probé la estructuración de su carpeta y obtuve los mismos errores que el suyo, lo depuré un poco, encontré que el error estaba en la importación de configuración, así que profundicé más para entender por qué Python no puede importa tu configuración,

Creé un script en la carpeta superior para averiguar por qué. También se agregó en la línea de impresión en config.py y modelservice.main.py

 print('__file__={0:<35} | __name__={1:<20} | __package__={2<20}'.format(__file__,__name__,str(__package__))) import apis.config import apis.modelservice.main

Esta fue la estructura

 apis ├── config.py └── modelservice └── main.py

Ejecuto el script en el script de la carpeta superior llamado main.py. Terminó con este resultado:

 __file__=main.py | __name__=__main__ | __package__=None __file__=/home/yagiz/Desktop/test/apis/config.py | __name__=apis.config | package__=apis apis.config __file__=/home/yagiz/Desktop/test/apis/modelservice/main.py | __name__=apis.modelservice.main | __package__=apis.modelservice

Me pareció extraño porque debería poder importar de forma relativa, pero cuando traté de importar eso, ¿qué

 from .. import config

volvió:

 File "./main.py", line 8, in <module> from .. import config ImportError: attempted relative import with no known parent package

Solo para probarlo, probé esta estructura, también usé la import config: de importación absoluta :

 apis/ ├── modelservice  ├── config.py  ├── main.py INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) INFO: Started reloader process [14155] using statreload __file__=./main.py | __name__=main | __package__= __file__=./config.py | __name__=config | __package__= config INFO: Started server process [14157] INFO: Waiting for application startup. INFO: Application startup complete.

Todo funcionó bien así, por lo que el problema es con la organización de su módulo y cómo importa las cosas, así que échele un vistazo nuevamente.

over 4 years ago · Santiago Trujillo Relatório

0

Agregado a lo que Yagizcan respondió anteriormente, si alguien todavía recibe un error de importación del módulo en pycharm, cambie la raíz de las fuentes a la carpeta de código desde el menú Archivo.

 LearningPy <folder name> | |-- apis <folder name> -----|--modelservice <folder name> ---------|--dataprovider.py ---------|--persondetails.py ------|--main.py ------|--config.py

Aquí he movido main.py fuera de la carpeta modelservice. ya que main.py se ejecutará como api. Luego, para ejecutar el código, agregué el siguiente código uvicorn path to apisfolder.main:app --reload . Y ahora funcionó sin ningún problema.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda