You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 15:14:57