pip install google-cloud не работает на aws ec2 с KeyError: 'google'
У меня есть приложение Flask, развернутое в кластере Amazon Elastic Beanstalk. На моем локальном компьютере, macOS, я добавил интеграцию с Google Cloud API, и я обновил мой файл require.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, однако при создании аналогичного virtualenv на моем ec2 и установке требований я получаю ту же ошибку, что и при развертывании. Одна вещь, о которой я читал, заключается в том, что в ec2 может не быть установлен google cloud sdk, однако я установил его на моем ec2 (проверено как внутри, так и снаружи virtualenv), используя следующие команды, как описано здесь:
curl https://sdk.cloud.google.com | bash
exec -l $SHELL
gcloud init
Как я могу диагностировать эту ошибку и предотвратить ее дальнейшее развитие?
Мои текущие гипотезы:
- все еще есть проблема с тем, как Google Cloud SDK устанавливается или работает на EC2
- существует какой-то конфликт между требованиями в моем файле needs.txt после добавления требования к облаку Google
1 ответ
Я определил и исправил проблему. я имел google==1.9.2
в качестве пакета в моих требований.txt, и это не очень хорошо с google-cloud==0.27.0
, Я не уверен, почему это произошло, хотя.
Примечание: при развертывании в Elastic Beanstalk мне пришлось перестроить среду, чтобы изменения произошли. Похоже, что Elastic Beanstalk повторно использует Python virtualenv при развертывании, поэтому, если на сервере когда-либо выполнялась версия моего приложения с google==1.9.2
в требованиях, что ранее установленная версия google
будет мешать будущим развертываниям, которые исключили его