Flask 3.x AttributeError: ‘Provide‘ object has no attribute ‘xxxx‘

用了几天flask,之前都好好的,今天在规范项目结构而且加了一堆代码之后突然出现了这个错,心想不会啊,之前都好好的,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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/201001.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

获得矩阵对角线元素的索引 numpy.diag_indices_from()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 获得矩阵对角线元素的索引 numpy.diag_indices_from() [太阳]选择题 请问关于以下代码的选项表述错误的是? import numpy as np a np.array([[1, 2, 3], [4, 5, 6…

算法 搜索

深度优先搜索 广度优先搜索 深搜与广搜的区别 深搜 dfs——回溯——“不撞南墙不回头” 思路 总的来说是不撞南墙不回头,相当于一个人严格按照固定的行为模式。 例如走方格,依次走上下左右,每次走到一个新格子记录自己已经走过的方向&am…

技术阅读周刊第第8️⃣期

技术阅读周刊,每周更新。 历史更新 20231103:第四期20231107:第五期20231117:第六期20231124:第七期 Prometheus vs. VictoriaMetrics (VM) | Last9 URL: https://last9.io/blog/prometheus-vs-victoriametrics/?refd…

微服务1 springcloud学习笔记P1-P40

b微服务技术栈_哔哩哔哩_bilibili 文档资料: 链接:https://pan.baidu.com/s/1P_Ag1BYiPaF52EI19A0YRw?pwdd03r 提取码:d03r 一 了解微服务技术 二 Eureka (1) Eureka配置 (2) 注册user-service (3) 总结 Ribbon 负载均衡 (1) 流程 三 nacos配置管理…

26、pytest使用allure解读

官方实例 # content of pytest_quick_start_test.py import allurepytestmark [allure.epic("My first epic"), allure.feature("Quick start feature")]allure.id(1) allure.story("Simple story") allure.title("test_allure_simple_te…

MySQL_2.常用维护命令

(1)查看数据库版本 show variables like %version%; (2)数据库信息 列出所有的数据库 show databases; 切换数据库 use <database_name>; 查看数据库信息 show databases <database_name>; 查看当前使用数据库 …

百度Apollo新版本Beta技术沙龙参会体验

在自动驾驶领域&#xff0c;百度的Apollo一直是业界开源的标杆。其持续升级和创新的开源项目为整个自动驾驶行业树立了典范&#xff0c;不仅推动了技术的发展&#xff0c;也为广大的社区开发者们提供了学习和参考的范本。最近百度发布了Apollo新的Beta版本&#xff0c; 新版本B…

根文件系统初步测试

一. 简介 上一篇文章学习了向所编译生成的根文件系统中加入 lib库文件。文章地址如下&#xff1a; 根文件系统lib库添加与初步测试-CSDN博客 本文继上一篇文章的学习&#xff0c;本文对之前制作的根文件系统进行一次初步测试。 二. 根文件系统初步测试 为了方便测试&#…

Unity3D实现鼠标悬浮UI或物体上显示文字信息

系列文章目录 Unity工具 文章目录 系列文章目录前言最终效果一、UI事件显示文字1-1 ui事件需要引用命名空间using UnityEngine.EventSystems;1-2 IPointerEnterHandler 接口1-3 IPointerExitHandler 接口1-4 IPointerMoveHandler 接口 二、场景搭建2-1 实现如下 三、代码实现3…

Windows11亮度调节滑块消失不见,如何解决

电脑亮度调节滑块消失&#xff0c;键盘F6&#xff0c;F7亮度调节失效&#xff0c;系统-屏幕-亮度和颜色-亮度调节消失不见 1.首先winR ,输入regedit打开注册表编辑器 2.在注册表编辑器中依次点击(红橙黄绿青蓝紫) “计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Cl…

Linux edquota命令教程:如何管理用户和组的磁盘配额(附案例详解和注意事项)

Linux edquota命令介绍 edquota命令在Linux中用于编辑用户或组的配额。配额用于限制用户或组可以消耗的文件系统空间。edquota命令打开一个文本编辑器&#xff0c;通常是vi&#xff0c;允许用户编辑指定用户或组的配额信息。 Linux edquota命令适用的Linux版本 edquota命令在…

政府信息化与电子政务

前言&#xff1a;各个地方的省级政务服务平台是最具代表性的政务服务领域。 1、数字政府和政府服务的概念区别 数字政府 数字政府是指以新一代信息技术为支撑&#xff0c;重塑政务信息化管理架构、业务架构、技术架构&#xff0c;通过构建大数据驱动的政务新机制、新平台、新渠…

班级查分软件制作教程:老师必备技能!

首先&#xff0c;你需要选择一个合适的软件平台来制作班级查分软件。推荐使用群发成绩&#xff0c;因为它是一个功能强大且易于使用的在线查询系统&#xff0c;可以帮助你快速高效地制作班级查分软件​。 在制作班级查分软件之前&#xff0c;你需要准备好学生的成绩数据。这可以…

如何选择Docker基础镜像

镜像官网 操作系统基础镜像 busybox Alpine CentOS Ubuntu Debian 编程语言基础镜像 Java基础镜像 Python基础镜像 NodeJs基础镜像 应用基础镜像 Nginx基础镜像 Tomcat基础镜像 Jetty基础镜像 其它基础镜像例子 Maven基础镜像 Jenkins基础镜像 GitLab基础镜像 如何选择Docker基…

量化学习笔记——入门与基本概念

基本概念 量化投资 投资的核心是大数定律。 量化投资就是以数据为基础&#xff0c;以策略模型为核心&#xff0c;以程序化交易为手段&#xff0c;以 追求绝对收益为目标 的投资方法。 用数学表示金融市场&#xff0c;其数学定义&#xff1a; Y F ( x 1 , x 2 , . . . . .…

Java 连接Sqlite数据库

POM文件添加依赖 <dependency><groupId>org.xerial</groupId><artifactId>sqlite-jdbc</artifactId><version>3.36.0.3</version></dependency> application.yml spring:datasource:#url: jdbc:sqlite::resource:db/main.db…

python 0 or 1为什么返回1,or运算原理

0 or 1的python表达式为什么返回1 首先&#xff0c;应该先搞清楚or的用法&#xff0c;在逻辑or的比较运算中&#xff0c;比如m or n中&#xff0c;Python会先对m进行bool布尔运算bool(m)&#xff0c;如果返回True&#xff0c;则m or n的返回值为m&#xff0c;如果返回False&am…

备战春招——12.05算法

树、二叉树 本次主要是对树、二叉树的前中后和递归与非递归遍历以及通过这种结构完成一些操作实现。 二叉树 中序遍历 中序遍历就是中间打印出结果嘛,如下列递归实现的&#xff0c;中间取结果. /** 递归实现* Definition for a binary tree node.* struct TreeNode {* …

Nodejs+vue+ElementUi自动排课系统

使用自动排课系统分为管理员和学生、教师三个角色的权限子模块。 管理员所能使用的功能主要有&#xff1a;首页、个人中心、学生管理、教师管理、班级信息管理、专业信息管理、教室信息管理、课程信息管理、排课信息管理、系统管理等。 学生可以实现首页、个人中心、排课信息管…

Java集合框架之争:ArrayList vs LinkedList

友情提示&#xff1a;LinkedList其实就是数据结构中的双向链表&#xff0c;没学过的话可以学一下有关链表的知识&#xff0c;至于LinkedList中的源码其实大多数据结构的基本链表操作实现的&#xff0c;这里我就不多做说明了&#xff0c;有兴趣的话可自行看源码 由于ArrayList由…