将PyNaCl导入Lambda函数时,没有名为“\u cffi\u backend”的模块

2024-06-16 14:49:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我能够将我的PyNaCl库作为一个层添加到Lambda(Python 3.8)中,但是由于某种原因,当我尝试测试代码时,我得到了错误

“errorMessage”:“无法导入模块‘lambda_函数’:没有名为‘cffi_backend’的模块, “errorType”:“Runtime.ImportModuleError”

现在,当我在本地使用PyCharm并将PyNaCl库安装到venv中时,我没有执行错误。Lambda是否要求文件层次结构不同?我将库压缩为/lib/python3.8/site-packages,其中唯一包含的库是PyNaCl


Tags: 模块lambda函数backendvenv错误cffipycharm
2条回答

您的问题可能有两个原因:

  1. 库文件夹结构不准确。尝试python/lib/python3.8/site-packages,然后再次压缩并上传

  2. 如果(1)不起作用,则可能是您使用的库是在与Amazon Lambda不兼容的平台上编译的。AmazonLambda基于AmazonLinux。一种简单的方法是使用AWS提供的docker文件创建docker映像(请注意您的python版本):

https://docs.aws.amazon.com/lambda/latest/dg/python-image.html

然后在容器中编译PyNaCl库,取出已编译的库文件并再次进行上载

Lambda需要layer.zip存档目录结构以pythondir开头。通常有效的方法是:

mkdir python
pip install pynacl -t python

这将创建正确的结构。压缩和上传作为一个层

或者,您可以使用依赖项构建docker映像,并在lambda:https://docs.aws.amazon.com/lambda/latest/dg/images-create.html中使用它

相关问题 更多 >