Uvicorn报错:模块'app.app'中未找到属性'app'求助
解决FastAPI + Uvicorn "Attribute 'app' not found in module 'app.app'"错误
问题场景
按照教程搭建项目,文件结构为:
- 外层目录有
main.py app文件夹内有app.py
main.py代码:
import uvicorn if __name__ == "__main__": uvicorn.run("app.app:app", port=8000, reload=True)
app.py代码:
from fastapi import FastAPI app = FastAPI() @app.get("/", tags=['ROOT']) async def root() -> dict: return{"Ping":"Pong"}
运行main.py时出现错误:
Error loading ASGI app. Attribute "app" not found in module "app.app".
尝试重命名app.py和命令行启动Uvicorn均无效。
解决方案
1. 给app文件夹添加__init__.py
Python需要文件夹内有__init__.py才能将其识别为Python包,否则无法正确导入内部模块的属性。
在app文件夹里创建一个空的__init__.py文件,最终文件结构应为:
项目根目录/ ├── main.py └── app/ ├── __init__.py └── app.py
2. 确保在项目根目录运行代码
如果终端工作目录不是项目根目录(即包含main.py和app文件夹的目录),Uvicorn会找不到正确的模块路径。
打开终端,切换到项目根目录后再运行:
python main.py
或者直接用Uvicorn命令启动(同样在项目根目录执行):
uvicorn app.app:app --port 8000 --reload
3. 排查命名冲突
检查是否存在以下情况:
- 项目目录外有同名的
app.py或app文件夹 - Python环境中安装了与
app同名的第三方包 app.py内的FastAPI实例变量名是否确实为app(你的代码里是正确的,可再次确认)
内容的提问来源于stack exchange,提问作者Friendly One
相关产品推荐
相关产品推荐

