相关疑难解决方法(0)

Pyinstaller 编译的 Uvicorn 服务器无法正确启动

当我启动server.exe并尝试执行时uvicorn.run(),抛出异常:

Traceback (most recent call last):
  File "logging\config.py", line 390, in resolve
ModuleNotFoundError: No module named 'uvicorn.logging'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "logging\config.py", line 542, in configure
  File "logging\config.py", line 654, in configure_formatter
  File "logging\config.py", line 469, in configure_custom
  File "logging\config.py", line 397, in resolve
  File "logging\config.py", line 390, in resolve
ValueError: Cannot resolve 'uvicorn.logging.DefaultFormatter': No module named 'uvicorn.logging'

The above exception was the …
Run Code Online (Sandbox Code Playgroud)

python pyinstaller uvicorn

6
推荐指数
2
解决办法
1413
查看次数

当 uvicorn 工作人员> 1 时,uvicorn 和 fastAPI 与 pyinstaller 问题

我检查了 PyInstaller 和 FastAPI(超出最大递归深度)并且 Pyinstaller 编译的 Uvicorn 服务器无法正确启动

FastAPI 演示main.py

import uvicorn
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def root():
    return {"hello": "world"}

if __name__ == '__main__':
    uvicorn.run(app, host="0.0.0.0", port=58000, reload=False)
Run Code Online (Sandbox Code Playgroud)

首先运行 pyinstallerpyinstaller -F main.py --clean并添加hidden_imports规范:

hidden_imports=[
                'uvicorn.logging',
                'uvicorn.loops',
                'uvicorn.loops.auto',
                'uvicorn.protocols',
                'uvicorn.protocols.http',
                'uvicorn.protocols.http.auto',
                'uvicorn.protocols.websockets',
                'uvicorn.protocols.websockets.auto',
                'uvicorn.lifespan',
                'uvicorn.lifespan.on',
            ]
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但是当工人大于 1 时,应用程序必须是字符串:

WARNING: You must pass the application as an import string to enable 'reload' or 'workers'.

所以我改为:

if __name__ == '__main__': …
Run Code Online (Sandbox Code Playgroud)

python pyinstaller fastapi uvicorn

1
推荐指数
1
解决办法
6976
查看次数

标签 统计

pyinstaller ×2

python ×2

uvicorn ×2

fastapi ×1