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}
...
For me it’s a version issue. So, I fixed it with below versions:
- aws-cli/1.18.105
Command: sudo python3 -m pip3 install awscli==1.18.105
- botocore/1.17.28
Command: sudo python3 -m pip3 install botocore==1.17.28
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
pip uninstall botocore
worked for me
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
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
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.
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.
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.
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}
...
For me it’s a version issue. So, I fixed it with below versions:
- aws-cli/1.18.105
Command: sudo python3 -m pip3 install awscli==1.18.105
- botocore/1.17.28
Command: sudo python3 -m pip3 install botocore==1.17.28
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
pip uninstall botocore
worked for me
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
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
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.
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.