J'ai une application Flask déployée sur un cluster Amazon Elastic Beanstalk. Sur ma machine locale, macOS, j'ai ajouté une intégration à l'API Google Cloud, et j'ai mis à jour mon fichier requirements.txt pour inclure la ligne google-cloud==0.27.0
. Quand je déploie pour Elastic Beanstalk avec le fichier des besoins mis à jour, mon déploiement échoue au cours pip install
avec l'erreurpip installation google-cloud échoue sur aws ec2 avec KeyError: 'google'
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'
Je suis en mesure d'installer mes besoins localement dans un mais, python en cours d'exécution virtualenv 3, lorsque je crée un virtualenv similaire sur mon ec2 et installer les exigences, j'obtiens la même erreur que je reçois pendant le déploiement. Une chose que j'ai lu est que le EC2 pourrait ne pas avoir cependant sdk google nuage installé, je l'ai installé sur mon EC2 (testé à la fois à l'intérieur et à l'extérieur d'un virtualenv) en utilisant les commandes suivantes comme décrit ici here:
curl https://sdk.cloud.google.com | bash
exec -l $SHELL
gcloud init
Comment puis-je diagnostiquer cette erreur et l'empêcher de se produire à l'avenir?
Mes hypothèses sont:
- il y a encore un problème avec la façon dont sdk nuage Google est d'installer ou de faire fonctionner sur le EC2
- il y a un conflit entre les exigences de mon fichier requirements.txt une fois que je ajouter l'exigence google-cloud