Python 3.x 用于Python和AWS Lambda的Google云平台API不兼容:无法导入名称';cygrpc&x27;
我正在尝试将Google云平台(特别是Vision API)用于带有AWS Lambda的Python。因此,我必须为依赖项创建一个部署包。然而,当我尝试创建这个部署包时,我会遇到几个编译错误,不管Python的版本是3.6还是2.7。考虑到3.6版,我遇到了“无法导入名称‘cygrpc’”的问题。对于2.7,我在.path文件中遇到了一些未知错误。我遵循AWS Lambda部署包说明。他们推荐了两种选择,但都不起作用/导致相同的问题。出于某种原因,GCP与AWS Lambda不兼容吗?怎么回事 Python3.6和2.7都不适合我Python 3.x 用于Python和AWS Lambda的Google云平台API不兼容:无法导入名称';cygrpc&x27;,python-3.x,amazon-web-services,google-cloud-platform,aws-lambda,Python 3.x,Amazon Web Services,Google Cloud Platform,Aws Lambda,我正在尝试将Google云平台(特别是Vision API)用于带有AWS Lambda的Python。因此,我必须为依赖项创建一个部署包。然而,当我尝试创建这个部署包时,我会遇到几个编译错误,不管Python的版本是3.6还是2.7。考虑到3.6版,我遇到了“无法导入名称‘cygrpc’”的问题。对于2.7,我在.path文件中遇到了一些未知错误。我遵循AWS Lambda部署包说明。他们推荐了两种选择,但都不起作用/导致相同的问题。出于某种原因,GCP与AWS Lambda不兼容吗?怎么回事
注意:我在这里发帖是为了自己回答这个问题,因为我花了很长时间才找到解决方案,我想与大家分享我的解决方案。TL;DR:您无法在Mac或任何您使用的pc上编译部署包。您必须使用特定的OS/“设置”来执行此操作,AWS Lambda使用该设置来运行您的代码。要做到这一点,您必须使用EC2 我将在这里提供一个关于如何让Google Cloud Vision在AWS Lambda for Python 2.7上工作的答案。这个答案有可能扩展到AWS Lambda上的其他API和其他编程语言 因此,我的解决方案之旅从Github开始,其他人也有同样的问题。有人发布的一个解决方案是 我在运行时遇到了同样的问题“无法导入名称‘cygrpc’” 兰姆达。用pip解决了这个问题,在AMI中安装google cloud vision amzn-ami-hvm-2017.03.1.20170812-x86_64-gp2实例并导出 lib/python3.6/site-packages至aws lambda谢谢@tsaver 这部分是正确的,除非我读错了,但无论如何,它引导我走上了正确的道路。您必须使用EC2。以下是我采取的步骤:
如果这里的内容不符合描述,请原谅我,给我发消息或随意编辑我的答案。希望这能有所帮助。基于@Josh Wolff的答案(非常感谢,顺便说一下!),这可以通过使用亚马逊提供的Lambdas Docker图像来简化 您可以将这些库与项目源代码捆绑在一起,也可以像我在下面的
Makefile
脚本中所做的那样,将其作为AWS层上传
layer:
set -e ;\
docker run -v "$(PWD)/src":/var/task "lambci/lambda:build-python3.6" /bin/sh -c "rm -R python; pip install -r requirements.txt -t python/lib/python3.6/site-packages/; exit" ;\
pushd src ;\
zip -r my_lambda_layer.zip python > /dev/null ;\
rm -R python ;\
aws lambda publish-layer-version --layer-name my_lambda_layer --description "Lambda layer" --zip-file fileb://my_lambda_layer.zip --compatible-runtimes "python3.6" ;\
rm my_lambda_layer.zip ;\
popd ;
上述脚本将:
python
目录(仅对运行第二个
时间)python
目录中python
目录python
目录和zip文件requirements.txt
文件包含Josh在上面列出的模块:google cloud vision、protobuf、google api python客户端、httplib2、uritemplate、goo