Flask 3.x + dependency-injector 4.xAttributeError: ‘Provide‘ object has no attribute ‘xxxx‘

本文主要是介绍Flask 3.x + dependency-injector 4.xAttributeError: ‘Provide‘ object has no attribute ‘xxxx‘,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

用了几天flask+dependency-injector,之前都好好的,今天在规范项目结构而且加了一堆代码之后突然出现了这个错,心想不会啊,之前都好好的,chatGPT, new bing ,stackoverflow都问遍了,就是找不到正确的解决方案,回家之后一点点的rollback检查,终于发现问题所在了.

首先呢先说说一般的解决方法:

这就是初学的时候很容易犯的一个错误,编译器不会告诉你错了,启动项目也没问题,知道call到这个api了就会报这个错.


from flask import  Blueprint
from dependency_injector.wiring import inject, Providefrom main.service.user_services import UserService
from main.containers import Containerdb_bp=Blueprint('db',__name__)@db_bp.route('/create_user')
def create_user(user_service:UserService=Provide[Container.user_service]):return user_service.create_user().to_string()

那就是忘记加 @inject


from flask import  Blueprint
from dependency_injector.wiring import inject, Providefrom main.service.user_services import UserService
from main.containers import Containerdb_bp=Blueprint('db',__name__)
@inject
@db_bp.route('/create_user')
def create_user(user_service:UserService=Provide[Container.user_service]):return user_service.create_user().to_string()

还有一种情况就是在Containers 中定义的问题,这里我就不展示了,只是把Containers 贴出来,这里一般就是忘记定义而已,很好检查

"""Containers module."""from dependency_injector import containers, providersfrom main.config.database_config import DatabaseConfig
from main.config.storage_config import StorageConfig
from main.repository.user_repositories import UserRepository
from main.service.user_services import UserService
from .beanFactory import BeanFactoryclass Container(containers.DeclarativeContainer):wiring_config = containers.WiringConfiguration(packages=["main.db","main",])config = providers.Configuration(yaml_files=["config.yml"])db=providers.Singleton(DatabaseConfig,db_url=config.db.url)storage=providers.Singleton(StorageConfig,storage_config=config.storage)storage = providers.Factory(storage.provided.getStorageService)user_repository = providers.Factory(UserRepository,session_factory=db.provided.session,)user_service = providers.Factory(UserService,user_repository=user_repository,)

重头戏来了

我遇到当然不属于这里的任何一种,我发现我在整理项目结构的时候,把blueprint往目录深处放了,之前是和application.py同一目录,现在出问题了,就怀疑是目录的问题,移出来之后果然不报错了.然后一点一点排查,发现了问题根源,那就是  __init__.py ,他是用来告诉python这是一个包的.

我修改目录结构之后是这样的

/application.py
/web/controller__init__.pyblueprint.py

 在application.py里面引入也是没问题的 from .web.controller.blueprint import bp

但是其实问题就出在目录里面,我/controller目录里面有__init__.py没错,但是/web里面没有放,就导致了这个问题. 

修改成这样,就可以完美解决了.

记住修改之后需要重新启动项目,热部署不会加载到这个改动.

/application.py
/web__init__.py/controller__init__.pyblueprint.py

这篇关于Flask 3.x + dependency-injector 4.xAttributeError: ‘Provide‘ object has no attribute ‘xxxx‘的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/462587

相关文章

Python Flask实现定时任务的不同方法详解

《PythonFlask实现定时任务的不同方法详解》在Flask中实现定时任务,最常用的方法是使用APScheduler库,本文将提供一个完整的解决方案,有需要的小伙伴可以跟随小编一起学习一下... 目录完js整实现方案代码解释1. 依赖安装2. 核心组件3. 任务类型4. 任务管理5. 持久化存储生产环境

Python用Flask封装API及调用详解

《Python用Flask封装API及调用详解》本文介绍Flask的优势(轻量、灵活、易扩展),对比GET/POST表单/JSON请求方式,涵盖错误处理、开发建议及生产环境部署注意事项... 目录一、Flask的优势一、基础设置二、GET请求方式服务端代码客户端调用三、POST表单方式服务端代码客户端调用四

flask库中sessions.py的使用小结

《flask库中sessions.py的使用小结》在Flask中Session是一种用于在不同请求之间存储用户数据的机制,Session默认是基于客户端Cookie的,但数据会经过加密签名,防止篡改,... 目录1. Flask Session 的基本使用(1) 启用 Session(2) 存储和读取 Se

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre

Python错误AttributeError: 'NoneType' object has no attribute问题的彻底解决方法

《Python错误AttributeError:NoneTypeobjecthasnoattribute问题的彻底解决方法》在Python项目开发和调试过程中,经常会碰到这样一个异常信息... 目录问题背景与概述错误解读:AttributeError: 'NoneType' object has no at

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

Python Flask 库及应用场景

《PythonFlask库及应用场景》Flask是Python生态中​轻量级且高度灵活的Web开发框架,基于WerkzeugWSGI工具库和Jinja2模板引擎构建,下面给大家介绍PythonFl... 目录一、Flask 库简介二、核心组件与架构三、常用函数与核心操作 ​1. 基础应用搭建​2. 路由与参

Python中Flask模板的使用与高级技巧详解

《Python中Flask模板的使用与高级技巧详解》在Web开发中,直接将HTML代码写在Python文件中会导致诸多问题,Flask内置了Jinja2模板引擎,完美解决了这些问题,下面我们就来看看F... 目录一、模板渲染基础1.1 为什么需要模板引擎1.2 第一个模板渲染示例1.3 模板渲染原理二、模板

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas