我在 Amazon Elastic Beanstalk 集群上部署了一个 Flask 应用程序。在我的本地机器 macOS 上,我添加了与 Google Cloud API 的集成,并更新了我的 requirements.txt 以包含google-cloud==0.27.0
. 当我使用更新的需求文件部署到 Elastic Beanstalk 时,我的部署失败pip install
并出现错误
Running setup.py install for grpcio
Complete output from command /opt/python/run/venv/bin/python3.4 -c "import setuptools, tokenize;__file__='/tmp/pip-build-ve1vz0tx/grpcio/setup
.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-aszzosux-rec
ord/install-record.txt --single-version-externally-managed --compile --install-headers /opt/python/run/venv/include/site/python3.4/grpcio:
Failed to import the site module
Traceback (most recent call last):
File "/opt/python/run/venv/lib64/python3.4/site.py", line 890, in <module>
main()
File "/opt/python/run/venv/lib64/python3.4/site.py", line 848, in main
virtualenv_search_paths(sys.prefix)
File "/opt/python/run/venv/lib64/python3.4/site.py", line 638, in virtualenv_search_paths
addsitedir(sitedir, known_paths)
File "/opt/python/run/venv/lib64/python3.4/site.py", line 204, in addsitedir
addpackage(sitedir, name, known_paths)
File "/opt/python/run/venv/lib64/python3.4/site.py", line 173, in addpackage
exec(line)
File "<string>", line 1, in <module>
KeyError: 'google'
我可以在运行 python 3 的 virtualenv 中本地安装我的要求,但是,当我在我的 ec2 上创建类似的 virtualenv 并安装要求时,我得到了与部署期间相同的错误。我读到的一件事是 ec2 可能没有安装 google cloud sdk,但是,我使用此处描述的以下命令将它安装在我的 ec2 上(在 virtualenv 内部和外部进行了测试) :
curl https://sdk.cloud.google.com | bash
exec -l $SHELL
gcloud init
如何诊断此错误并防止它继续发生?
我目前的假设是:
- google cloud sdk 在 ec2 上的安装或运行方式仍然存在问题
- 添加 google-cloud 要求后,我的 requirements.txt 文件中的要求之间存在一些冲突