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

测试Celery示例时遇AttributeError: 'EntryPoints'无get属性问题求助

解决Celery运行报错AttributeError: 'EntryPoints' object has no attribute 'get'的正确方案

这个问题的核心是Python 3.12和旧版本Celery(5.2.x系列)的兼容性冲突:Python 3.12配套的importlib-metadata实现(即使你安装了4.13.0,Python 3.12标准库已集成更新的版本)修改了EntryPoints对象的API,移除了get方法,但Celery 5.2.x和对应的kombu 5.2.x仍在使用这个过时方法,导致报错。

正确解决步骤

  1. 彻底卸载旧版本依赖
    先清理现有冲突的包,避免版本残留:

    pip uninstall -y celery kombu importlib-metadata
    
  2. 安装兼容Python 3.12的Celery版本
    Celery从5.3.0版本开始正式支持Python 3.12,推荐直接安装稳定的兼容版本,它会自动匹配兼容的kombu和依赖:

    # 安装最新稳定版(推荐)
    pip install celery --upgrade
    
    # 或者指定明确的兼容版本,比如5.3.4
    # pip install celery==5.3.4 kombu==5.3.4
    
  3. 验证修复效果
    重新运行你的worker命令:

    celery -A ctest worker --loglevel=INFO
    

为什么之前的降级操作无效?

Celery 5.2.x全系列都没有适配Python 3.12的importlib.metadata API变更,哪怕降到5.2.3也解决不了本质问题——这个版本的代码依然在调用EntryPoints.get()方法,而Python 3.12环境里已经不存在这个方法了。

为什么不推荐修改源码?

你修改源码的方式只能临时解决当前问题,但后续更新依赖包时会被覆盖,而且手动修改库源码容易引入其他未测试的bug,对于生产环境或长期维护的项目来说风险很高,完全没必要。

额外注意事项

  • 如果使用虚拟环境,确保操作时激活了对应的虚拟环境,避免全局包混乱。
  • 如果项目有requirements.txt,记得更新里面的Celery和kombu版本号,比如改成celery>=5.3.0,防止后续安装时又回到旧版本。

内容的提问来源于stack exchange,提问作者AAA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 16:20:15