Can';由于(似乎)循环依赖性,无法通过Pip安装AWS客户端

Can';由于(似乎)循环依赖性,无法通过Pip安装AWS客户端,pip,aws-cli,Pip,Aws Cli,我试图在Linux(Mint)上安装AWS CLI工具,但遇到了一个问题。当我跑步时: pip3 install aws-sam-cli 我得到: 错误:awscli 1.18.216的要求botocore==1.19.56,但您的botocore 1.17.63不兼容 好的,应该足够简单来修复;我就跑: pip3 install botocore==1.19.56 。。。除此之外,我得到: 错误:boto3 1.14.63要求botocore=1.17.63,但您将需要botocore 1

我试图在Linux(Mint)上安装AWS CLI工具,但遇到了一个问题。当我跑步时:

pip3 install aws-sam-cli
我得到:

错误:awscli 1.18.216的要求botocore==1.19.56,但您的botocore 1.17.63不兼容

好的,应该足够简单来修复;我就跑:

pip3 install botocore==1.19.56
。。。除此之外,我得到:

错误:boto3 1.14.63要求botocore=1.17.63,但您将需要botocore 1.19.56,这是不兼容的

好的,很好,让我们安装正确的
botocore

pip3 install botocore==1.18.0
。。。现在我已经破坏了
bot3
(更不用说
awscli
包了):

错误:boto3 1.14.63要求botocore=1.17.63,但您将需要botocore 1.18.0,这是不兼容的

错误:awscli 1.18.216要求botocore==1.19.56,但您将需要botocore 1.18.0,这是不兼容的

如果我尝试稍微低一点(但仍然可以接受?
botocore
1.17.63,它将修复
boto3
。。。但是AWS仍然被打破了:

pip3 install botocore==1.17.63
错误:awscli 1.18.216的要求botocore==1.19.56,但您的botocore 1.17.63不兼容

当然,如果我试图修复
botocore
,我们又回到了破坏
boto3

pip3 install botocore==1.19.56
错误:boto3 1.14.63要求botocore=1.17.63,但您将需要botocore 1.19.56,这是不兼容的

亚马逊似乎有一套不可能满足的依赖关系


但我知道这是不可能的,所以有人能解释我不理解什么吗?我已经多年没有使用过
pip
,所以请对我放轻松。

您之所以会遇到这些循环依赖关系,是因为您尝试安装的
aws sam cli
软件包是最新版本,而您系统上已经安装的
bot3
软件包相对比较旧

现在来看看为什么这些包的依赖项是硬绑定的,这是为了确保在依赖项更新时包的特定版本不会中断。因此,AWS冠军已经充分测试并验证了
boto3 1.14.63要求botocore=1.17.63
awscli 1.18.216要求botocore=1.19.56

不过,如果您仔细查看当前已安装和正在尝试安装的软件包:

  • boto3 1.14.63-依赖于botocore>=1.17.63-和botocore<1.18.0-
  • aws sam cli最新版本(因为您尚未指定版本)-依赖于awscli 1.18.216-而awscli 1.18.216又依赖于botocore==1.19.56-
  • 正如您所看到的,当您尝试安装最新版本的aws sam cli时,它需要更新版本的botocore(1.19.56),而您的boto3安装被指示不超过版本1.18.0的botocore

    因此,为了确保这些软件包的生态系统运行良好,我们需要将boto3和aws sam cli安装到一个版本,使它们都能与给定版本的botocore一起工作,这可以通过两种方式完成:

  • 我们将旧的软件包更新为新版本,也就是说,我们将boto3更新为新版本(在撰写本文时最新)。这将需要您确保您现有的代码与更新版本的boto3配合良好,并且没有任何倒退
  • 您可以指示pip安装较旧版本的aws sam cli,例如
  • 注意:
    我要给出的另一条建议是将您的需求绑定到一个特定的版本,以确保您不会在生产中遇到意外,因为可能会有包更新,这可能会再次破坏您的依赖关系或使代码无法按预期工作。不过,这仅适用于使用CI/CD型号并推出产品的新版本的情况。

    您应该添加
    pip3
    python3
    的版本。谢谢:
    PIP20.0.2 from/usr/lib/python3/dist packages/pip(python3.8)
    pip3 install boto3==1.16.62 aws-sam-cli==1.15.0
    
    pip3 install aws-sam-cli==1.3.0