ImportError:无法从 AWS CodeBuild 中的“botocore.docs.bcdoc”导入名称“docevents”

Posted

技术标签:

【中文标题】ImportError:无法从 AWS CodeBuild 中的“botocore.docs.bcdoc”导入名称“docevents”【英文标题】:ImportError: cannot import name 'docevents' from 'botocore.docs.bcdoc' in AWS CodeBuild 【发布时间】:2021-02-12 05:00:17 【问题描述】:

ImportError:无法从“botocore.docs.bcdoc”导入名称“docevents” (/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

失败发生在PRE_BUILD中。

这是我的规范构建文件: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)

代码构建工作正常,没有任何更改。 只是停止工作。

【问题讨论】:

【参考方案1】:

阅读此GitHub issue #2596. 我修正了我的错误。

就在 PRE_BUILD 部分之前,我将这一行添加到我的 buildspec-cd.yml 文件中:

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
      ...

【讨论】:

在我的情况下,我还必须在升级 awscli 之前pip3 install --upgrade pip【参考方案2】:

对我来说这是一个版本问题。所以,我用以下版本修复了它:

    aws-cli/1.18.105

命令:sudo python3 -m pip3 install awscli==1.18.105

    botocore/1.17.28

命令:sudo python3 -m pip3 install botocore==1.17.28

【讨论】:

不管它可能关心的人:请使用任何 pip 或 pip3 【参考方案3】:

在 Ubuntu 20.04 上遇到同样的错误,@vijay rajput 的答案一开始没有用,通过用 pip 替换 pip3 修复 - sudo python3 -m pip install awscli==1.18.105sudo python3 -m pip install botocore==1.17.28 谢谢

【讨论】:

以上是关于ImportError:无法从 AWS CodeBuild 中的“botocore.docs.bcdoc”导入名称“docevents”的主要内容,如果未能解决你的问题,请参考以下文章

SAM命令失败:ImportError:无法导入名称AliasedEventEmitter

ImportError - 将 Falcon 应用程序部署到 AWS Elastic Beanstalk

ImportError:没有名为 django.core.wsgi 的模块 Apache + VirtualEnv + AWS + WSGI

ImportError:无法从“flask”导入名称“request”

ImportError:无法从“类型”导入名称“IntType”

python aiorpc:“ImportError:无法从'aiorpc.server'导入名称'RPCServer'”