使用jmespath 1.0.1版本报错:module 'jmespath' has no attribute 'search'
解决jmespath 1.0.1版本
AttributeError: Module jmespath has no attribute search 错误 可能的原因及解决方案:
1. 脚本文件名与jmespath模块重名
如果你的Python脚本文件名为jmespath.py,会导致Python优先加载你自己的脚本,而非官方的jmespath模块,从而找不到search方法。
- 解决步骤:
- 将脚本重命名为非
jmespath.py的名称(比如jmespath_demo.py) - 删除同目录下的
jmespath.pyc文件或__pycache__文件夹(如果存在)
- 将脚本重命名为非
2. jmespath模块安装不完整或损坏
模块安装过程中可能出现文件缺失,导致功能异常。
- 解决步骤:
- 先卸载现有模块:
pip uninstall -y jmespath - 重新安装指定版本:
pip install jmespath==1.0.1 - 或者升级到最新稳定版(推荐,新版本修复了更多问题):
pip install --upgrade jmespath
- 先卸载现有模块:
3. 替换导入与调用方式
如果上述方法无效,可以换一种方式调用search功能:
- 直接导入
search函数:from jmespath import search person = { "person": [ {'id': 1, 'name': 'ali', 'age': 42, 'children': [ {'name': 'sara', 'age': 7}, {'name': 'sima', 'age': 15}, {'name': 'sina', 'age': 2} ]}, {'id': 2, 'name': 'reza', 'age': 65, 'children': []} ] } print(search('person[*].children[?age>`10`].name', person)) - 或者使用JMESPath类实例调用:
from jmespath import JMESPath jp = JMESPath() person = { "person": [ {'id': 1, 'name': 'ali', 'age': 42, 'children': [ {'name': 'sara', 'age': 7}, {'name': 'sima', 'age': 15}, {'name': 'sina', 'age': 2} ]}, {'id': 2, 'name': 'reza', 'age': 65, 'children': []} ] } print(jp.search('person[*].children[?age>`10`].name', person))
内容的提问来源于stack exchange,提问作者alirhm
相关产品推荐
相关产品推荐

