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

python-telegram-bot AWS部署报__dict__ slot disallowed类型错误

问题根因

TypeError: __dict__ slot disallowed: we already got one报错和python-telegram-bot官方示例代码逻辑无关,属于AWS部署环境的依赖兼容问题,本地开发环境能正常运行是因为本地依赖和AWS运行环境的依赖存在差异,常见触发原因有两个:

  • 部署时直接将本地Windows/macOS/其他架构Linux环境下安装的第三方依赖包打包上传到AWS,带C扩展的二进制依赖和AWS的Amazon Linux运行环境(含Graviton ARM架构实例)不兼容
  • 部署时未做Python虚拟环境隔离,代码运行时加载了AWS系统预装的旧版本依赖(核心冲突为旧版attrs库,该报错就是由attrs库抛出),和python-telegram-bot要求的依赖版本不匹配
解决步骤

按顺序操作即可修复:

  1. 隔离运行环境,避免系统依赖干扰
    不管是EC2/ECS还是Lambda部署,都不要直接使用系统全局的Python包:
    • EC2/ECS部署:先在实例内创建独立虚拟环境,后续所有依赖安装、代码运行都在虚拟环境内执行
      python3 -m venv venv
      source venv/bin/activate
      pip install --upgrade pip
      
    • Lambda部署:不要直接打包本地开发环境的依赖上传,使用和Lambda运行时Python版本、CPU架构完全匹配的Amazon Linux构建环境安装依赖后再打包。
  2. 安装匹配版本的依赖
    你贴的示例代码是基于python-telegram-bot v13.x版本的同步API编写,不要安装v20+版本(v20改为全异步API,和示例代码不兼容),固定版本安装即可:
    pip install python-telegram-bot==13.15
    
    安装完成后强制重装兼容版本的attrs,修复版本冲突:
    pip install --force-reinstall "attrs>=21.3.0"
    
  3. 配置环境变量彻底屏蔽全局包干扰
    在启动bot的脚本最开头添加环境变量配置,或直接在AWS控制台的环境变量配置项中添加:
    export PYTHONNOUSERSITE=1
    
    该配置会让Python解释器忽略系统全局、用户目录下预装的第三方包,仅加载你自己部署的项目目录/虚拟环境内的依赖,彻底避免预装包冲突。
验证方法

部署完成后先在运行环境中执行pip list | grep -E "attrs|python-telegram-bot|cachetools",确认python-telegram-bot为13.x版本、attrs版本不低于21.3.0,再启动bot即可正常运行,不会再抛出该slot错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 21:42:17