SAM command failing with: ImportError: cannot import name AliasedEventEmitter
SAM command failing with: ImportError: cannot import name AliasedEventEmitter
我正在 运行使用 buildspec.yml
文件通过 AWS CodeBuild 创建 SAM 模板
我认为这个问题是由 pip 安装默认 python 2.7 版本的 aws-sam-cli
包引起的。我不太熟悉如何 pip install
包的 python3
版本。这是我的 buildspec.yml
:
的片段
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
...
有没有人运行遇到过这个问题?
对于任何重新审视这个问题的人,我都明白了。以下是我修改后的 buildspec.yml
片段。我必须使用 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
我正在 运行使用 buildspec.yml
文件通过 AWS CodeBuild 创建 SAM 模板
我认为这个问题是由 pip 安装默认 python 2.7 版本的 aws-sam-cli
包引起的。我不太熟悉如何 pip install
包的 python3
版本。这是我的 buildspec.yml
:
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
...
有没有人运行遇到过这个问题?
对于任何重新审视这个问题的人,我都明白了。以下是我修改后的 buildspec.yml
片段。我必须使用 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