运行 pyinstaller 后 FastAPI 多进程错误

Running FastAPI multiple process error after pyinstaller

我正在 运行宁 python FastAPI 与 UVICORN 与多个处理器(5 个进程),它是 运行宁从代码顺利,但当我尝试使 exe 从pyinstaller 并尝试 运行 文件,它显示错误。

文件名: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)

从源代码输出代码

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.

我通过以下命令使用 pyinstaller 创建了一个文件

pyinstaller --onefile main.py

同时 运行 使用

设置主文件
./main

得到如下错误

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

如何引用 main:app,安装程序创建后的实际 class 名称是什么? 我在某处读到我们需要使用 foldername.main:app ,但这也不起作用

我试过你的程序并用

安装
pyinstaller --onefile --hidden-import=main main.py

帮我解决了。