Estoy ejecutando python FastAPI con UVICORN con múltiples procesadores (5 procesos), funciona sin problemas desde el código, pero cuando intenté hacer el exe desde pyinstaller e intenté ejecutar el archivo, muestra un error.
nombre de archivo: main.py
import multiprocessing import os import uvicorn from fastapi import FastAPI app = FastAPI() @app.get("/") async def root(): return {"message": "Hello World"} if __name__ == "__main__": multiprocessing.freeze_support() print("Running the instance") uvicorn.run("main:app", host="0.0.0.0", port=9000, workers=5)Código de salida de la fuente
python3 main.py Running the instance INFO: Uvicorn running on http://0.0.0.0:9000 (Press CTRL+C to quit) INFO: Started parent process [17828] INFO: Started server process [17869] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Started server process [17870] INFO: Waiting for application startup. INFO: Application startup complete.Hago un solo archivo usando pyinstaller con el siguiente comando
pyinstaller --onefile main.pyy mientras ejecuta el archivo principal usando
./mainobtener el siguiente error
Running the instance INFO: Uvicorn running on http://0.0.0.0:9000 (Press CTRL+C to quit) INFO: Started parent process [18964] ERROR: Error loading ASGI app. Could not import module "main". ERROR: Error loading ASGI app. Could not import module "main".¿Cómo hacer referencia a la aplicación principal: cuál es el nombre real de la clase después de crear el instalador? Leí en alguna parte que necesitamos usar como foldername.main:app , pero eso tampoco funciona
Probé tu programa e instalé con
pyinstaller --onefile --hidden-import=main main.pyme lo soluciono