我正在尝试使用 Zappa 和 circleci 将我的 Python 项目部署到 AWS Lambda。
它的投掷错误
Error: Zappa requires an active virtual environment!
#!/bin/bash -eo pipefail
zappa update dev
(PyYAML 3.13 (/usr/local/lib/python3.6/site-packages), Requirement.parse('PyYAML>=4.1'), {'cfn-flip'})
Calling update for stage dev..
Error: Zappa requires an active virtual environment!
Learn more about virtual environments here: http://docs.python-guide.org/en/latest/dev/virtualenvs/
Exited with code 1
我正在使用以下命令安装 venv。
pip install virtualenv
virtualenv venv
source venv/bin/activate
有什么我想念的吗? 有人可以帮助我吗?
我必须使用 pip3 安装 zappa 和 virtualenv 然后激活它。
sudo pip install zappa
sudo pip3 install virtualenv
virtualenv -p python3 venv
source venv/bin/activate
pip install -r requirements.txt
zappa update dev
这是一个简短的工作示例,它使用 python3 虚拟环境,而不是 virtualenv 包。 为了让它工作,你需要在 CircleCI web UI 中将
AWS_ACCESS_KEY_ID
和 AWS_SECRET_ACCESS_KEY
设置为环境变量。
version: 2
jobs:
build:
docker:
- image: circleci/python:3.6.1
working_directory: ~/app
steps:
- checkout
- run:
name: install dependencies
command: |
python3 -m venv ~/venv
. ~/venv/bin/activate
pip install -r requirements.txt
- deploy:
name: deploy
command: |
. ~/venv/bin/activate
# set aws credentials
mkdir -p ~/.aws
echo -e "[default]" >> ~/.aws/credentials
echo -e "aws_access_key_id = "$AWS_ACCESS_KEY_ID >> ~/.aws/credentials
echo -e "aws_secret_access_key = "$AWS_SECRET_ACCESS_KEY >> ~/.aws/credentialstrouble
# try to update, if the command fails do the initial deploy
zappa update dev || zappa deploy dev;
请注意,我使用的是 python 3.6.1 CircleCI 图像,我在使用 3.6.9 时遇到了一些小问题
具有依赖项缓存、运行测试套件、测试是否可以创建包、部署到testing和production环境的完整示例可以在这里找到:https://github.com/mislavcimpersak/xkcd-excuse-generator /blob/master/.circleci/config.yml