使用Whoosh 2.7.4调用search方法时触发NameError: name 'q' is not defined错误的原因咨询
Whoosh 2.7.4调用search方法时触发NameError: name 'q' is not defined错误的原因咨询
嘿,看起来你碰到的是Whoosh 2.7.4版本里的一个代码疏漏bug!
从你提供的栈追踪信息能清楚看到,错误发生在whoosh/query/spans.py文件的_and_query方法中——代码里直接调用了q.And(self.qs),但这个q模块(也就是Whoosh的query模块)根本没在这个文件里导入!这是官方代码里的一个低级失误,属于导入缺失的问题。
给你两个可行的解决方向:
- 临时快速修复:找到你本地的
~/.local/lib/python3.6/site-packages/whoosh/query/spans.py文件,打开后在顶部的导入区域添加一行:
保存文件后重启你的Python环境,这个错误应该就会消失了。这个修改只是补全了缺失的模块导入,不会影响其他功能的正常运行。from whoosh import query as q - 长期最优方案:考虑升级Whoosh到更高版本(比如3.x系列)。2.7.4是比较老旧的版本了,后续的官方版本肯定已经修复了这类基础bug,同时还会带来更多功能更新和性能优化。如果你的项目依赖允许的话,升级是更稳妥的选择。
备注:内容来源于stack exchange,提问作者Sam324
相关产品推荐
相关产品推荐

