环境

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‘ 报错问题记录相关推荐

  1. AttributeError: 'NoneType' object has no attribute 'grid'报错解决方案

    1问题描述: 当我们在使用tkinter时经常遇到AttributeError: 'NoneType' object has no attribute 'grid'的报错 2.原因分析: import ...

  2. AttributeError: ‘Request‘ object has no attribute ‘is_xhr‘ 报错

    在用 Flask+VUE 做前后端分离的数据可视化项目时,遇到了这个报错:AttributeError: 'Request' object has no attribute 'is_xhr' 是 We ...

  3. AttributeError: 'Request' object has no attribute 'is_xhr' 报错的解决办法

    在用 Flask+VUE 做前后端分离的数据可视化项目时,遇到了这个报错:AttributeError: 'Request' object has no attribute 'is_xhr' 是 We ...

  4. AttributeError: 'NoneType' object has no attribute 'split' 报错处理

    报错场景 social_django 组件对原生 django 的支持较好, 但是因为 在此DRF进行的验证为 JWT 方式 和 django 的验证存在区别, 因此需要进行更改自行支持 JWT 方式 ...

  5. 解决AttributeError: 'str' object has no attribute 'decode'报错问题

    顺着报错文件点进去,找到query = query.decode(errors='replace') 将decode修改为encode即可

  6. AttributeError: 'function' object has no attribute 'Document'报错解决

    原因是函数名称和系统中的某个名称相同的,替换另外的名字就行了 报错代码: #读取docx中的文本代码示例 import docx def docx():file=docx.Document(filen ...

  7. 'int' object has no attribute 'backward'报错 使用Pytorch编写 Hinge loss函数

    在编写SVM中的Hinge loss函数的时候报错"'int' object has no attribute 'backward'" for epoch in range(50) ...

  8. 【Django】‘function‘ object has no attribute ‘subjects‘报错的解决

    项目场景 创建了一个新文件夹 myapp ,用于保存新功能模块下实现功能的代码文件 views.py . 问题描述 运行项目时,报错 'function' object has no attribut ...

  9. ‘StandardScaler‘ object has no attribute ‘fit_tranform‘报错原因

    原代码: from sklearn.preprocessing import StandardScaler sc = StandardScaler()x_train=sc.fit_tranform(i ...

最新文章

  1. 将选择元素绑定到Angular中的对象
  2. ROS探索总结(十)(十一)(十二)——语音控制 机器视觉 坐标系统
  3. 笔记-项目管理基础知识-复习要点
  4. 数据结构与算法(一):链表
  5. 网络流(3)——找到最小st-剪切
  6. Scala 类和对象
  7. 【HNOI 2016】序列
  8. mysql索引统计信息更新_MySQL索引统计信息更新相关的参数
  9. 不小心合并了icloud通讯录_苹果手机号码被删除如何恢复?找回通讯录的具体步骤...
  10. 深度学习自学(七):腾讯移动端开源框架ncnn学习总结
  11. 笔记本更新网卡驱动后,出现:上网图标消失、网络连接为空、设备管理器中网络适配器全部为叹号、有线无线均无法链接的情况
  12. 前端优化 - 提高 Web 性能的 9 个技巧
  13. IPFS时代来临,FIL WORLD重赋存储灵魂
  14. 【BSP视频教程】STM32H7视频教程第4期:从启动到运行过程全解析,电源域,复位,时钟,软硬件启动流程到堆栈,map和htm文件分析(2022-01-26)
  15. matlab中的级数怎默算_matlab相关系数计算公式(Pearson和Spearman,以及Kendall Rank)...
  16. Qt实现页面跳转与返回上一级页面(Qt+VS2019)
  17. 用超级终端给手机烧IMEI号
  18. kkt条件里面的松弛互补条件推导
  19. 永磁同步电机准谐振自抗扰电流谐波抑制(QRADRC)的无位置传感器控制
  20. Graalvm安装配置与springboot3.0尝鲜

热门文章

  1. 打码平台破解验证码+session登陆豆瓣
  2. 四六级高分技巧--贼有用
  3. 超声波换能器驱动电源发生器设计
  4. 利用不同卫星的仰角方位角绘制站心星空图
  5. 学习曲线( learning curve)是什么?如何绘制学习( learning curve)曲线?学习曲线( learning curve)详解及实践
  6. FANUC机器人的先执行指令功能(TA/TB)详解
  7. MoveWindow and SetWindowPos
  8. 什么是分布式系统(通俗易懂的说法)
  9. Matlab决策树对空气质量和天气温度及天气数据做交通出行推荐预测|数据分享
  10. mysql safe 配置 my.cnf_linux下mysql配置文件my.cnf最详细解释