AttributeError: ‘PosixPath‘ object has no attribute ‘rstrip‘ 报错问题记录
环境
python3.6.5
django 3.1.5
问题定位及解决
最近准备开发一个在线教育的网站,各个环境都搭好了,并且测试demo 也能跑的好好的,为了以后
调试接口方便,所以我打算把swagger,也放进来进行接口管理,于是我按照网上教程老老实实的始安装drf_yasg, 并配置到我的项目中,等一切配完以后,项目一跑,啪!报错:AttributeError: ‘winsPath’ object has no attribute ‘rstrip’,我于是就开始看报错信息,看半天没有头绪,于是各自百度谷歌,一顿猛搜,相关的资料比较少,仅有的几个也和当前我的环境有很大区别。 这个时候,旁边同事,说可能是你再windows上开发,导致的djiango 或者drf_yasg 和windows有不兼容。建议我换到linux上进行开发,于是我再同事的帮助下,三下五除二的把linux上的开发环境搭好了,但是一跑,啪!! 依然报错:AttributeError: ‘PosixPath’ object has no attribute ‘rstrip’ 。哦豁~ 看来跟平台无关,那就是代码问题了,于是我把所有做的关于与swagger的配置全部注释了,项目又正常了,于是断定,是drf_yasg引起的问题,于是我把配置一行行的放开注释,调试报错,最终发现再django的settings里面的INSTALLED_APPS 下添加drf_yasg的时候,会有那个问题。注释掉就不报错,看来就是这行注册app的代码导致的,于是开启调试模式和同事一起各种debug,各种追踪分析,发现怪异现象(debug跳过了报错,正式运行报错,似乎两者走的不是同一条路径)这里就不说这些怪异现象了,反正最终也没有个清晰的问题定位结论,最后追踪到最后一层有个purepath的基类,它里面接收一个对象,并调用这个对象的rstrip对象,发现这个对象没有rstrip对象,于是猜想问题出在这个对象上,由于debug是直接跳过了报错,所以没有办法,只有刀耕火种的手工进行调试,也不知道是哪个对象,于是同事想到,涉及到路径,开始考虑到哪些方面涉及到路径的,最终考虑到settings里面INSTALLED_APPS下面以及settings上面的BASE_DIR有涉及,一个个注释了再调试报错(过程省略)。最终的最终是由于sys.path.insert(0, BASE_DIR)这行代码导致的。而这行代码,正好是之前旁边同事和我定位问题的
加上的,后面就没有去掉,当时问题解决了以后,当时重新跑也没有报错,但是今天重新引入drf_yasg
的时候,就不知道为什么,莫名其名的就引起了上面的报错,而且对比了验证了一下,不仅仅是drf_yasg会引起报错,rest_framework也会引起报错,但是corsheaders不会,这就说明了,有些app注册会,有些不会。继续深入分析原因发现,BASE_DIR = Path(file).resolve().parent.parent.parent sys.path.insert(0, BASE_DIR),这里的BASE_DIR是返回的是一个PosixPath对象,该对象没有rstrip,而sys.path.insert()函数需要的是一个字符串,而字符串对象有这个rstrip属性的。最终的直接原因是参数的传递错误,间接原因是,之前的调试代码忘记去掉了(捂脸哭),引起的报错。根本原因参数类型
错误。哎。。都是防不胜防的坑。因为之前调试代码的时候,同事复制了,这两行代码给我,BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(file))),sys.path.insert(0, BASE_DIR) 他那里没有报错,因为是配套的,到了我这边,因为上面django自带了BASE_DIR = Path(file).resolve().parent.parent.parent 这行代码,于是我把同事给我的那行关于BASE_DIR的代码去掉了,所以导致了参数引用不匹配,类型不对导致的报错,更坑的是,平时不报错,在settings
注册一些app的时候才会引起这个报错,有非常大的迷惑性和误导性,再加上调试又跳过。定位真的是
一把鼻涕一把泪。好了,擦一擦眼泪,就记录到这吧。孩子,以后还是长个心眼吧
AttributeError: ‘PosixPath‘ object has no attribute ‘rstrip‘ 报错问题记录相关推荐
- AttributeError: 'NoneType' object has no attribute 'grid'报错解决方案
1问题描述: 当我们在使用tkinter时经常遇到AttributeError: 'NoneType' object has no attribute 'grid'的报错 2.原因分析: import ...
- AttributeError: ‘Request‘ object has no attribute ‘is_xhr‘ 报错
在用 Flask+VUE 做前后端分离的数据可视化项目时,遇到了这个报错:AttributeError: 'Request' object has no attribute 'is_xhr' 是 We ...
- AttributeError: 'Request' object has no attribute 'is_xhr' 报错的解决办法
在用 Flask+VUE 做前后端分离的数据可视化项目时,遇到了这个报错:AttributeError: 'Request' object has no attribute 'is_xhr' 是 We ...
- AttributeError: 'NoneType' object has no attribute 'split' 报错处理
报错场景 social_django 组件对原生 django 的支持较好, 但是因为 在此DRF进行的验证为 JWT 方式 和 django 的验证存在区别, 因此需要进行更改自行支持 JWT 方式 ...
- 解决AttributeError: 'str' object has no attribute 'decode'报错问题
顺着报错文件点进去,找到query = query.decode(errors='replace') 将decode修改为encode即可
- AttributeError: 'function' object has no attribute 'Document'报错解决
原因是函数名称和系统中的某个名称相同的,替换另外的名字就行了 报错代码: #读取docx中的文本代码示例 import docx def docx():file=docx.Document(filen ...
- 'int' object has no attribute 'backward'报错 使用Pytorch编写 Hinge loss函数
在编写SVM中的Hinge loss函数的时候报错"'int' object has no attribute 'backward'" for epoch in range(50) ...
- 【Django】‘function‘ object has no attribute ‘subjects‘报错的解决
项目场景 创建了一个新文件夹 myapp ,用于保存新功能模块下实现功能的代码文件 views.py . 问题描述 运行项目时,报错 'function' object has no attribut ...
- ‘StandardScaler‘ object has no attribute ‘fit_tranform‘报错原因
原代码: from sklearn.preprocessing import StandardScaler sc = StandardScaler()x_train=sc.fit_tranform(i ...
最新文章
- 将选择元素绑定到Angular中的对象
- ROS探索总结(十)(十一)(十二)——语音控制 机器视觉 坐标系统
- 笔记-项目管理基础知识-复习要点
- 数据结构与算法(一):链表
- 网络流(3)——找到最小st-剪切
- Scala 类和对象
- 【HNOI 2016】序列
- mysql索引统计信息更新_MySQL索引统计信息更新相关的参数
- 不小心合并了icloud通讯录_苹果手机号码被删除如何恢复?找回通讯录的具体步骤...
- 深度学习自学(七):腾讯移动端开源框架ncnn学习总结
- 笔记本更新网卡驱动后,出现:上网图标消失、网络连接为空、设备管理器中网络适配器全部为叹号、有线无线均无法链接的情况
- 前端优化 - 提高 Web 性能的 9 个技巧
- IPFS时代来临,FIL WORLD重赋存储灵魂
- 【BSP视频教程】STM32H7视频教程第4期:从启动到运行过程全解析,电源域,复位,时钟,软硬件启动流程到堆栈,map和htm文件分析(2022-01-26)
- matlab中的级数怎默算_matlab相关系数计算公式(Pearson和Spearman,以及Kendall Rank)...
- Qt实现页面跳转与返回上一级页面(Qt+VS2019)
- 用超级终端给手机烧IMEI号
- kkt条件里面的松弛互补条件推导
- 永磁同步电机准谐振自抗扰电流谐波抑制(QRADRC)的无位置传感器控制
- Graalvm安装配置与springboot3.0尝鲜
热门文章
- 打码平台破解验证码+session登陆豆瓣
- 四六级高分技巧--贼有用
- 超声波换能器驱动电源发生器设计
- 利用不同卫星的仰角方位角绘制站心星空图
- 学习曲线( learning curve)是什么?如何绘制学习( learning curve)曲线?学习曲线( learning curve)详解及实践
- FANUC机器人的先执行指令功能(TA/TB)详解
- MoveWindow and SetWindowPos
- 什么是分布式系统(通俗易懂的说法)
- Matlab决策树对空气质量和天气温度及天气数据做交通出行推荐预测|数据分享
- mysql safe 配置 my.cnf_linux下mysql配置文件my.cnf最详细解释