如何检查 awscli 和兼容的 botocore 包是否已安装

how to check awscli and compatible botocore package is installed

我正在尝试使用 boto3 学习 python for aws,所以我试图执行此处给出的代码 https://boto3.readthedocs.io/en/latest/guide/s3-example-creating-buckets.html 我遇到错误 module boto3 not found
所以我根据这里的答案升级到 boto3 提到使用 pip3 install boto3 发出这个命令给我以下输出

C:\Users\DEEL>pip3 install boto3
Collecting boto3
  Downloading https://files.pythonhosted.org/packages/c9/cd/d48602dc99ecb52876cf
741477f15c874b631e5776723f27092693a5b535/boto3-1.7.80-py2.py3-none-any.whl (128k
B)
    100% |████████████████████████████████| 133kB 160kB/s
Collecting botocore<1.11.0,>=1.10.80 (from boto3)
  Downloading https://files.pythonhosted.org/packages/5e/cf/b97f44993766af17bf64
aeddadf66f63b6ebf3d700565cc7ee7b13cd0067/botocore-1.10.80-py2.py3-none-any.whl (
4.5MB)
    100% |████████████████████████████████| 4.5MB 1.3MB/s
Requirement already satisfied: jmespath<1.0.0,>=0.7.1 in e:\installation2\python
3\lib\site-packages (from boto3) (0.9.3)
Requirement already satisfied: s3transfer<0.2.0,>=0.1.10 in e:\installation2\pyt
hon3\lib\site-packages (from boto3) (0.1.13)
Requirement already satisfied: docutils>=0.10 in e:\installation2\python3\lib\si
te-packages (from botocore<1.11.0,>=1.10.80->boto3) (0.14)
Requirement already satisfied: python-dateutil<3.0.0,>=2.1; python_version >= "2
.7" in e:\installation2\python3\lib\site-packages (from botocore<1.11.0,>=1.10.8
0->boto3) (2.7.3)
Requirement already satisfied: six>=1.5 in e:\installation2\python3\lib\site-pac
kages (from python-dateutil<3.0.0,>=2.1; python_version >= "2.7"->botocore<1.11.
0,>=1.10.80->boto3) (1.11.0)
awscli 1.15.80 has requirement botocore==1.10.79, but you'll have botocore 1.10.
80 which is incompatible.
Installing collected packages: botocore, boto3
  Found existing installation: botocore 1.10.79
    Uninstalling botocore-1.10.79:
      Successfully uninstalled botocore-1.10.79

在这个输出中有一行 awscli 1.15.80 has requirement botocore==1.10.79, but you'll have botocore 1.10. 80 which is incompatible.

所以基于 link 这里 我升级了 awscli pip3 install –upgrade awscli 在屏幕上得到以下输出

C:\Users\DEEL>pip3 install --upgrade awscli
Collecting awscli
  Downloading https://files.pythonhosted.org/packages/6b/fa/89c248eaacccd816fdea
88206060a7cd221f227855782ff7b0ffb80d725a/awscli-1.15.81-py2.py3-none-any.whl (1.
3MB)
    100% |████████████████████████████████| 1.3MB 198kB/s
Requirement already satisfied, skipping upgrade: rsa<=3.5.0,>=3.1.2 in e:\instal
lation2\python3\lib\site-packages (from awscli) (3.4.2)
Requirement already satisfied, skipping upgrade: PyYAML<=3.13,>=3.10 in e:\insta
llation2\python3\lib\site-packages (from awscli) (3.13)
Requirement already satisfied, skipping upgrade: colorama<=0.3.9,>=0.2.5 in e:\i
nstallation2\python3\lib\site-packages (from awscli) (0.3.9)
Requirement already satisfied, skipping upgrade: botocore==1.10.80 in e:\install
ation2\python3\lib\site-packages (from awscli) (1.10.80)
Requirement already satisfied, skipping upgrade: s3transfer<0.2.0,>=0.1.12 in e:
\installation2\python3\lib\site-packages (from awscli) (0.1.13)
Requirement already satisfied, skipping upgrade: docutils>=0.10 in e:\installati
on2\python3\lib\site-packages (from awscli) (0.14)
Requirement already satisfied, skipping upgrade: pyasn1>=0.1.3 in e:\installatio
n2\python3\lib\site-packages (from rsa<=3.5.0,>=3.1.2->awscli) (0.4.4)
Requirement already satisfied, skipping upgrade: jmespath<1.0.0,>=0.7.1 in e:\in
stallation2\python3\lib\site-packages (from botocore==1.10.80->awscli) (0.9.3)
Requirement already satisfied, skipping upgrade: python-dateutil<3.0.0,>=2.1; py
thon_version >= "2.7" in e:\installation2\python3\lib\site-packages (from botoco
re==1.10.80->awscli) (2.7.3)
Requirement already satisfied, skipping upgrade: six>=1.5 in e:\installation2\py
thon3\lib\site-packages (from python-dateutil<3.0.0,>=2.1; python_version >= "2.
7"->botocore==1.10.80->awscli) (1.11.0)
Installing collected packages: awscli
  Found existing installation: awscli 1.15.80
    Uninstalling awscli-1.15.80:
      Successfully uninstalled awscli-1.15.80
Successfully installed awscli-1.15.81

我的问题是我在安装 boto3 时收到的不兼容消息是什么awscli 1.15.80 has requirement botocore==1.10.79, but you'll have botocore 1.10. 80 which is incompatible.我如何检查 awscli 和 botocore 安装的兼容性以及应该在我的机器上做什么,以便我在进一步的开发工作中不会遇到问题。

pip3 列表如下

C:\Users\DEEL>pip3 list
Package         Version
--------------- -------
awscli          1.15.81
boto3           1.7.80
botocore        1.10.80
colorama        0.3.9
docutils        0.14
jmespath        0.9.3
pip             18.0
pyasn1          0.4.4
python-dateutil 2.7.3
PyYAML          3.13
rsa             3.4.2
s3transfer      0.1.13
setuptools      39.0.1
six             1.11.0

现在应该怎么做才能让awscli和botocore兼容?

不过,我想提一下我在 https://boto3.readthedocs.io/en/latest/guide/s3-example-creating-buckets.html 中尝试的代码,在完成所有这些工作后成功执行。

同样的问题,我的解决方法如下所示。

将 aws-cli 升级到最新版本

$ pip3 install awscli --upgrade --user

卸载现有的先前版本的 botocore 和 boto3

$ pip3 uninstall botocore
$ pip3 uninstall boto3

然后重新安装

$ pip3 install botocore
$ pip3 install boto3

结果日志

Package         Version
--------------- -------
awscli          1.16.1 
boto3           1.8.1  
botocore        1.11.1 
colorama        0.3.9  
docutils        0.14   
jmespath        0.9.3  
pip             18.0   
pyasn1          0.4.4  
python-dateutil 2.7.3  
PyYAML          3.13   
rsa             3.4.2  
s3transfer      0.1.13 
setuptools      40.0.0 
six             1.11.0 
urllib3         1.23   
virtualenv      16.0.0 
wheel           0.31.1

其他答案强调升级版本,但如果有人需要特定版本才能使用,则存在问题。我必须使用需要 botocore 1.18.18 的第三方库,并且我想要相应的兼容版本的 awscli。为此,只需访问 release history page of botocore on pypi .Search for your botocore version and check it's release date. After this, visit corresponding release history page of awscli 并搜索在该特定日期发布的 awscli 版本。