Error loading ASGI app. Attribute "app" not found in module "statement".

出现的问题(我的是问题7)

(venv) PS E:\yyb\ele_scteen\hhd-link-ai-elescreen> uvicorn statement:app --reload --host 0.0.0.0 --port 9014 
INFO: Will watch for changes in these directories: ['E:\\yyb\\ele_scteen\\hhd-link-ai-elescreen'] 
INFO: Uvicorn running on http://0.0.0.0:9014 (Press CTRL+C to quit) 
INFO: Started reloader process [2960] using StatReload 
ERROR: Error loading ASGI app. Attribute "app" not found in module "statement".

使用主函数可以启动服务

if name == "__main__": 
    uvicorn.run(app, host='0.0.0.0', port=9014)

使用指令不能启动服务

uvicorn statement:app --reload --host 0.0.0.0 --port 9014

检查问题和解决问题

1. 检查 statement.py 文件

确保你的 statement.py 文件中有以下代码:

python复制代码from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
    return {"Hello": "World"}

2. 确认文件路径

确保 statement.py 文件与当前运行命令的目录相同,即在 E:\yyb\ele_scteen\hhd-link-ai-elescreen 中。

3. 模块命名

如果你的文件名不是 statement.py,确保在命令中使用的模块名与实际文件名相匹配。

4. 检查环境

确保你在虚拟环境中,并且已经安装了 fastapiuvicorn。可以通过以下命令检查:

pip show fastapi uvicorn

5. 重启环境

有时重启命令行界面和虚拟环境也能解决问题。确保在执行命令之前激活你的虚拟环境。

6. Python 文件的语法错误

检查 statement.py 是否有语法错误或其他问题,确保可以正常导入。

根据以上步骤进行检查,应该能找到并解决问题。

6. 存在同名文件或文件夹

检擦运行的文件夹目录下是否存在与statement.py文件同名的文件夹或文件,导致指令查找不到对应的statement.py文件

可以尝试修改文件名statement.py改为state.py文件重新运行

uvicorn statement:app --reload --host 0.0.0.0 --port 9014

即可