当使用 uvicorn
运行 FastAPI 应用时,如果遇到模型定义找不到的问题,通常是由于以下几个原因造成的:
以下是一些解决步骤和示例代码:
假设你有一个模型定义在 models.py
文件中:
# models.py
from pydantic import BaseModel
class UserModel(BaseModel):
id: int
name: str
在你的主应用文件 main.py
中,你需要导入这个模型:
# main.py
from fastapi import FastAPI
from models import UserModel # 确保这一行存在
app = FastAPI()
@app.post("/users/")
async def create_user(user: UserModel):
return user
如果你的模型文件位于子目录中,你可能需要使用相对导入:
# apps/users/models.py
from pydantic import BaseModel
class UserModel(BaseModel):
id: int
name: str
然后在主应用文件中:
# apps/users/main.py
from fastapi import FastAPI
from .models import UserModel # 使用相对导入
app = FastAPI()
@app.post("/users/")
async def create_user(user: UserModel):
return user
确保你在正确的目录下运行 uvicorn
命令。例如,如果你的主应用文件是 main.py
,你应该在项目根目录下运行:
uvicorn main:app --reload
这里的 main:app
指定了模块和应用实例的名称。
以下是一个完整的示例,展示了如何定义模型、创建 API 端点并使用 Uvicorn 运行:
# models.py
from pydantic import BaseModel
class UserModel(BaseModel):
id: int
name: str
# main.py
from fastapi import FastAPI
from models import UserModel
app = FastAPI()
@app.post("/users/")
async def create_user(user: UserModel):
return user
然后运行:
uvicorn main:app --reload
通过以上步骤,你应该能够解决 FastAPI 找不到模型定义的问题。如果问题仍然存在,请检查是否有其他潜在的导入错误或路径问题。
领取专属 10元无门槛券
手把手带您无忧上云