运行 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
帮我解决了。
我正在 运行宁 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
帮我解决了。