ImportError: cannot import name 'docevents' from 'botocore.docs.bcdoc' in AWS CodeBuild

Question:

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.

Answers:

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}
      ...
Answered By: Juan Rey Hernández

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

Answered By: vijay rajput

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

Answered By: Viacheslav Safronov

pip uninstall botocore
worked for me

Answered By: Broosted

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
Answered By: John Velonis

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
Answered By: U53r

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.

Answered By: Shubhank Gupta

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.

Answered By: danielcahall