【问题标题】:SAM command failing with: ImportError: cannot import name AliasedEventEmitterSAM 命令失败:ImportError: cannot import name AliasedEventEmitter
【发布时间】:2019-03-13 00:28:17
【问题描述】:

我正在使用 buildspec.yml 文件通过 AWS CodeBuild 运行 SAM 模板 我相信这个问题是由 pip 安装了aws-sam-cli 包的默认 python 2.7 版本引起的。我不太熟悉如何pip install python3 版本的包。这是我的buildspec.ymlsn-p:

phases:
  pre_build:
    commands:
      - echo "Pre-Build Phase started - SAM Deployment"
      - alias python=python3
      - pip install --upgrade pip
      - pip install aws-sam-cli # install the sam cli
      - USER_BASE_PATH=$(python -m site --user-base) # save the path to the user's local packages folder to a variable (as opposed to the global packages folder)
      - export PATH=$PATH:$USER_BASE_PATH/bin # add the user's local packages folder to PATH
      - sam --version # verify "sam" can now be called
  build:
    commands:
      - sam package --runtime python3 --template-file ${INPUT_FILE} --output-template-file ${OUTPUT_FILE} --s3-bucket ${S3_BUCKET} # package the template to an S3 bucket
...

有人遇到过这个问题吗?

【问题讨论】:

    标签: python amazon-web-services aws-codebuild aws-serverless serverless-application-model


    【解决方案1】:

    对于任何重新审视这个问题的人,我想通了。下面是我修改后的buildspec.ymlsn-p。我必须用 pip3 安装 awscli 包。

    phases:
      pre_build:
        commands:
          - echo "Pre-Build Phase started - SAM Deployment"
          - ls -ltr # list directory contents from oldest to new
          - sudo apt-get update
          - sudo apt-get -y install python3-pip
          - sudo pip3 install --upgrade awscli
          - apt-get update > /dev/null # get list of package updates from 
        repositories
          - apt-get install jq -y > /dev/null # install 32-bit JSON processor
          - jq --version # check JSON processor installed / which version
          - wget -q https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64 # get 64-bit JSON processor
          - chmod +x jq-linux64 # make executable
          - mv jq-linux64 $(which jq) # make "jq" alias point to 64-bit jq
          - jq --version # verify jq points to new version
          - alias python=python3
          - pip install aws-sam-cli # install the sam cli
          - USER_BASE_PATH=$(python -m site --user-base) # save the path to the user's local packages folder to a variable (as opposed to the global packages folder)
          - export PATH=$PATH:$USER_BASE_PATH/bin # add the user's local packages folder to PATH
          - sam --version # verify "sam" can now be called
      build:
        commands:
          - sam package --template-file ${INPUT_FILE} --output-template-file ${OUTPUT_FILE} --s3-bucket ${S3_BUCKET} # package the template to an S3 bucket
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-20
      • 2016-05-16
      • 2018-10-27
      • 2020-07-16
      • 2019-06-10
      • 2014-09-25
      • 2014-01-02
      相关资源
      最近更新 更多