You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用dependency_injector进行依赖注入时出现AttributeError: 'Provide' object has no attribute 'create_user'错误求助

使用dependency_injector进行依赖注入时出现AttributeError: 'Provide' object has no attribute 'create_user'错误求助

嘿,我之前也碰到过类似的依赖注入问题,看了你的代码和报错信息,大概率是容器没有正确装配导致的,给你一步步说怎么解决:

错误原因分析

你看到的AttributeError是因为Provide[Container.user_service]没有被解析成实际的UserService实例,而是保留了Provide对象本身,自然调用不了create_user方法。问题核心出在容器的初始化和装配环节。

具体解决步骤

1. 正确初始化并装配容器

修改你的main.py,一定要调用容器的wire()方法,这是让依赖注入系统把Provide对象替换成实际服务实例的关键步骤:

import uvicorn
from fastapi import FastAPI
from user.interface.controllers.user_controller import router as user_routers
from fastapi.exceptions import RequestValidationError
from fastapi.requests import Request
from fastapi.responses import JSONResponse
from containers import Container

# 初始化容器并执行装配
container = Container()
container.wire(packages=["user"])

app = FastAPI()
app.container = container
app.include_router(user_routers)

2. 确保控制器的依赖注入写法正确

检查你的user_controller.py,确认导入和注解都没问题:

from fastapi import Depends, Router
from dependency_injector.wiring import inject, Provide
from containers import Container
from user.application.user_service import UserService
# 记得导入你的Pydantic请求体模型
from user.interface.schemas.user_schema import CreateUserBody

router = Router()

@router.post("", status_code=201)
@inject
def create_user(
    user: CreateUserBody,
    user_service: UserService = Depends(Provide[Container.user_service]),
):
    created_user = user_service.create_user(
        name=user.name, email=user.email, password=user.password
    )
    return created_user

3. 版本兼容性排查(如果上面两步没用)

如果还是报错,可能是版本不兼容的问题。建议升级到稳定版本:

pip install --upgrade dependency-injector fastapi

推荐使用dependency_injector >= 4.40.0和FastAPI >= 0.100.0的组合。

额外验证数据上传的建议

当依赖注入的问题解决后,你可以用FastAPI自带的/docs接口或者Postman测试:

  • 检查请求体的字段是否和CreateUserBody模型完全匹配
  • 确认UserService.create_user方法正确调用了UserRepository的保存逻辑
  • 查看数据库是否有新数据写入,确保整个数据链路是通的

备注:内容来源于stack exchange,提问作者정기홍

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 11:09:52