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

安装cbpro引发依赖冲突、flask启动报错如何解决?

问题根因
  • 你安装的1.1.4版本cbpro库已停止维护多年,安装时会强制降级两个核心基础依赖到2017年的旧版本:requests==2.13.0、six==1.10.0
  • 当前环境运行的是Python 3.10+,旧版requests完全不兼容这个Python版本:Python 3.10开始将MutableMapping等抽象基类从collections模块迁移到了collections.abc下,旧版requests直接调用collections.MutableMapping就会触发你看到的AttributeError
  • 被强制降级的requests和six同时会破坏CS50环境内置的check50、submit50、uplink等工具,这些工具都要求更高版本的基础依赖,这也是你安装时看到一堆依赖冲突提示的原因。
修复步骤
  1. 先恢复被破坏的基础环境
    执行下面的命令,把被降级的依赖装回兼容的新版本,先解决Flask启动报错和CS50工具失效的问题:

    pip install --force-reinstall requests>=2.28.0 six>=1.16.0
    

    跑完这步可以先试下flask run,如果不再报collections相关的AttributeError,说明基础环境已经恢复正常。

  2. 解决cbpro的依赖兼容问题,二选一即可

    • 方案一(推荐,零代码改动):安装社区维护的兼容版cbpro
      原版cbpro已经停更,社区维护的兼容分叉版本完全保留了原库的所有接口,适配了新版Python和新依赖,不会触发版本冲突,直接安装即可:
      pip install cbpro-notdead
      
      装完不需要修改你代码里任何import cbpro的逻辑,原有调用方式完全不变。
    • 方案二(临时补丁方案):手动给旧版依赖打兼容补丁
      如果一定要用原版1.1.4的cbpro,在你项目app.py的最顶部,所有import语句之前加两行兼容映射代码,绕过Python版本兼容问题:
      import collections
      import collections.abc
      collections.MutableMapping = collections.abc.MutableMapping
      
      这个方案只是临时绕过报错,后续使用中大概率还会碰到其他兼容问题,优先用方案一。
  3. 验证结果
    重新执行flask run,服务能正常启动无报错,同时check50/submit50等CS50工具可以正常运行,就说明修复完成。

注意事项
  • 之前执行pip install uplink解决不了问题,报错根源是cbpro强制降级基础依赖,和uplink本身无关
  • 安装第三方库时如果pip弹出基础依赖(requests、six、urllib3这类大量包依赖的库)的冲突提示,不要直接忽略,强制降级这类库大概率会搞坏整个运行环境
  • Python3.10及以上版本不要用2020年之前停止维护的、锁定旧版基础依赖的库,很容易出现兼容问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:24:20