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

远程服务器构建pex文件时遭遇aiobotocore与botocore依赖冲突问题求助

解决boto3间接引发的aiobotocore与botocore版本冲突问题

这个问题的核心是:虽然你只在requirements.txt里声明了boto3,但boto3会自动依赖特定版本的botocore,而你的环境中可能有某个隐性依赖(比如其他第三方库)间接引入了aiobotocore==2.3.4,它对botocore的版本要求和当前boto3拉取的botocore版本(1.27.55)不兼容,从而导致冲突。

下面是具体的排查和解决步骤:

  • 第一步:定位引入aiobotocore的源头
    先搞清楚到底是哪个包间接拉进来了aiobotocore,推荐用pipdeptree工具查看完整依赖链:

    # 先安装pipdeptree(如果没装的话)
    pip install pipdeptree
    # 过滤出相关依赖
    pipdeptree | grep -E "aiobotocore|botocore"
    

    执行后你会看到类似some-package==x.x.x -> aiobotocore==2.3.4的输出,就能知道是哪个包引发的问题。

  • 第二步:指定兼容的版本组合
    aiobotocore==2.3.4要求botocore在1.24.21到1.24.22之间,而boto3和botocore是严格版本绑定的(比如boto3 1.21.x对应botocore 1.24.x)。你可以在requirements.txt里明确指定兼容的版本:

    boto3==1.21.21
    botocore>=1.24.21,<1.24.22
    

    这样既能满足aiobotocore的版本要求,也能保证boto3和botocore的兼容性。

  • 第三步:排除不必要的依赖(可选)
    如果排查后发现aiobotocore是某个你不需要的依赖项带进来的,可以用pip的排除语法在requirements.txt里移除它:

    # 假设是some-package引入了aiobotocore,排除它
    some-package==x.x.x --exclude aiobotocore
    

    注意:这么做之前要确认排除aiobotocore不会影响你的业务功能。

  • 第四步:清理缓存重新构建pex
    有时候pex会缓存旧的依赖包,导致版本冲突依然存在。你可以尝试清理缓存后重新构建:

    # 用--no-cache参数跳过缓存构建pex
    pex -r requirements.txt -o your_app.pex --no-cache
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 17:52:55