77

ImportError: cannot import name 'docevents' from 'botocore.docs.bcdoc'
(/python3.7/site-packages/botocore/docs/bcdoc/init.py)

Traceback (most recent call last):
  File "/root/.pyenv/versions/3.7.6/bin/aws", line 19, in <module>
    import awscli.clidriver

  File "/root/.pyenv/versions/3.7.6/lib/python3.7/site-packages/awscli/clidriver.py", line 36, in <module>
    from awscli.help import ProviderHelpCommand

  File "/root/.pyenv/versions/3.7.6/lib/python3.7/site-packages/awscli/help.py", line 23, in <module>
    from botocore.docs.bcdoc import docevents

ImportError: cannot import name 'docevents' from 'botocore.docs.bcdoc' (/root/.pyenv/versions/3.7.6/lib/python3.7/site-packages/botocore/docs/bcdoc/__init__.py)

[Container] 2020/10/29 16:48:39 Command did not exit successfully aws --version exit status 1

The failure occurs in the PRE_BUILD.

And this is my spec build file: buildspec-cd.yml

pre_build:
    commands:
      - AWS_REGION=${AWS_DEFAULT_REGION}
      - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
      - IMAGE_VERSION=${COMMIT_HASH}
      - REPOSITORY_URI=${CONTAINER_REGISTRY}/${APPLICATION_NAME}
      - aws --version
      - echo Logging in to Amazon ECR...
      - $(aws ecr get-login --region $AWS_DEFAULT_REGION --no-include-email)

The codebuild was working correctly and nothing has been changed. Only stopped working.

Juan Rey Hernández
  • 2,688
  • 3
  • 16
  • 18

10 Answers10

168

Reading this GitHub issue #2596. i fixed my error.

Just before the PRE_BUILD section, I added this line to my buildspec-cd.yml file:

pip3 install --upgrade awscli

install:
    commands:
      - pip3 install awsebcli --upgrade
      - eb --version
      - pip3 install --upgrade awscli

    pre_build:
      commands:
      - AWS_REGION=${AWS_DEFAULT_REGION}
      - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
      - IMAGE_VERSION=${COMMIT_HASH}
      ...
Ramsharan
  • 2,054
  • 2
  • 22
  • 26
Juan Rey Hernández
  • 2,688
  • 3
  • 16
  • 18
14

For me it's a version issue. So, I fixed it with below versions:

  1. aws-cli/1.18.105

Command: sudo python3 -m pip3 install awscli==1.18.105

  1. botocore/1.17.28

Command: sudo python3 -m pip3 install botocore==1.17.28

סטנלי גרונן
  • 2,917
  • 23
  • 46
  • 68
vijay rajput
  • 180
  • 1
  • 5
8

In my case this error occurs running the command 'aws --version' on ubuntu 20.04.

And the solution was:

python3 -m pip install --upgrade pip
python3 -m pip uninstall awscli
python3 -m pip install awscli
Ahmed
  • 2,825
  • 1
  • 25
  • 39
U53r
  • 156
  • 1
  • 4
  • Tried this on Ubuntu 20.04, which runs Python 3.8. It didn't work - got the same error. boto3 version is 1.24.45, botocore version is 1.27.45, and awscli version is 1.18.69 – Craig S. Anderson Aug 04 '22 at 16:28
4

Was getting the same error on Ubuntu 20.04, the answer from @vijay rajput did not work at the beginning, fixed by replacing pip3 with pip - sudo python3 -m pip install awscli==1.18.105 and sudo python3 -m pip install botocore==1.17.28 Thx

4

Upgrade pip (not necessary but it's better to do otherwise it will throw a Warning message while running the second command.)

python3 -m pip install --upgrade pip

Upgrade awscli (Necessary)

pip3 install --upgrade awscli

Add sudo in both commands if required to have root user permissions.

Shubhank Gupta
  • 705
  • 2
  • 10
  • 27
0

pip uninstall botocore worked for me

Broosted
  • 9
  • 3
  • 4
    Your answer could be improved with additional supporting information. Please [edit] to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers [in the help center](/help/how-to-answer). – Community Jan 31 '22 at 05:05
  • Agreed. botocore is a core library within awscli, so this really needs supporting information. – macetw Jul 14 '23 at 17:35
0

I also got this error on Ubuntu 20.04 (though not in CodeBuild, I was running aws lambda invoke). Installing the AWS CLI v2 (https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-linux.html) worked for me:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
John Velonis
  • 1,449
  • 1
  • 15
  • 13
0

For anyone who stumbles upon this question, in Ubuntu 20.04, if you install the awscli using apt (apt install awscli), the version it will install is 1.18.69, which is not compatible with later botocore versions. To fix the issue, either install the awscli through pip instead of through apt (so you can install the latest, which does work as of December 2022 with 1.27.30), or downgrade the botocore version. The last botocore which will work correctly with awscli version 1.18.69 is 1.17.63, which has a corresponding boto3 release of 1.14.63.

danielcahall
  • 2,672
  • 8
  • 14
0

I did a fresh install of Ubuntu 20.04, then installed awscli and boto3 using pip3. I then looked at the versions installed. From that I created the following, which seemed to fix the problems on existing machines:

sudo pip3 install awscli==1.27.140 boto3==1.26.140 botocore==1.29.140 s3transfer==0.6.1
Craig S. Anderson
  • 6,966
  • 4
  • 33
  • 46
0
pip3 install awsebcli --upgrade
pip3 install --upgrade awscli

If you still see error like:

 File "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", line 1573, in X509StoreFlags
    CB_ISSUER_CHECK = _lib.X509_V_FLAG_CB_ISSUER_CHECK
AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'

Then run

pip install pip --upgrade
pip install pyopenssl --upgrade

as mentioned here: AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'

Coder
  • 1,415
  • 2
  • 23
  • 49