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

Как я могу диагностировать эту ошибку и предотвратить ее дальнейшее развитие?

Мои текущие гипотезы:

  1. все еще есть проблема с тем, как Google Cloud SDK устанавливается или работает на EC2
  2. существует какой-то конфликт между требованиями в моем файле 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 будет мешать будущим развертываниям, которые исключили его

Другие вопросы по тегам