首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法从'grpc._cython‘导入名称'cygrpc’- Google API

无法从'grpc._cython‘导入名称'cygrpc’- Google API
EN

Stack Overflow用户
提问于 2022-01-24 07:57:42
回答 2查看 2.3K关注 0票数 1

我想在py魅力中将工作的python项目部署到aws lambda。该项目使用谷歌广告库从谷歌广告中获取一些报告数据。

我试图通过导入完整的项目作为一个zip文件来部署lambda,方法是压缩项目中的所有文件夹/文件,而不是项目文件夹本身。但我得到了以下错误:

代码语言:javascript
运行
复制
{
"errorMessage": "Unable to import module 'main': cannot import name 'cygrpc' from 'grpc._cython' (/var/task/grpc/_cython/__init__.py)",
"errorType": "Runtime.ImportModuleError",
"stackTrace": []
}

假设google-ads库工作正常,而且grpc有问题(顺便说一句,google-ads本身包含grpcio和一些东西),我试图为grpcio、cython、cygrpc创建一个层,但错误依然存在。

我在aws中创建项目/层,它们可以工作。我不知道我在这里做错了什么。

任何帮助都是非常感谢的!

版本: google-ads-14.1.0,python-3.9,grpcio-1.43.0

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-28 11:50:24

经过大量的变通后回答我自己的问题。我把它变成通用的所以任何人都可以使用它。

我相信只要部署包的文件结构、代码和体系结构都正常,就可以修复任何类型的ImportModuleError,只有这样,您才能成功地部署和运行代码。要修复您的结构和体系结构,请执行以下步骤:

从微软商店(Windows 10)安装“ubuntu18.04LTS”。

2-打开CMD并运行以下命令:

  • ubuntu1804
  • Enter密码或创建用户,如果asked.
  • cd /mnt/c,您可以选择任何驱动器。我选择了C.
  • mkdir my-lambda-folder创建项目folder.
  • cd my-lambda-folder,进入项目folder.
  • touch lambda_function.py创建文件,名为lambda_function.py
  • Now复制,并将您的代码粘贴到您刚刚创建的文件中,例如:pip install --target ./package google-ads将在文件夹'package‘中安装google模块。文件夹' package‘将自动创建,如果不是found.
  • cd package
  • zip -r ../my-deployment-package.zip .,这将创建部署包,并在项目文件夹根目录处安装库。例如,my-lambda-folder.
  • cd ..返回到项目folder.
  • zip -g my-deployment-package.zip lambda_function.py的根目录,将lambda函数添加到您刚刚创建的部署包中,在我使用google的情况下,添加my-deployment-package.zip.
  • (Optional)并运行我的代码i。我的部署包中也需要google-ads.yaml文件。因此,我运行了附加命令zip -g my-deployment-package.zip google-ads-yaml (我已经在我的项目文件夹中粘贴了这个文件)。

3-将my-deployment-package.zip上传到AWS控制台中的lambda函数,您就可以继续了。

票数 1
EN

Stack Overflow用户

发布于 2022-05-02 07:53:03

对我来说,它的工作只是通过下载的软件包与pip在码头和包装,并上传到AWS。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70830600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档