gpt4 book ai didi

python - 解决 无法导入模块 'lambda_function' : cannot import name '_AES'

转载 作者:太空宇宙 更新时间:2023-11-03 20:42:35 25 4
gpt4 key购买 nike

我正在尝试部署 lambda 函数,该函数使用 pycrypto 的模块 Crypto.Cipher AES 发出请求并解密数据。这就是我的导入的样子:

import boto3
from botocore.vendored import requests
import gzip
from io import StringIO, BytesIO
import base64
import sys
from datetime import datetime
import time
from Crypto.Cipher import AES

我在本地 Mac 环境中运行代码,它运行良好,但是当我将包上传到 AWS Lambda 并测试它时,出现以下错误:

Unable to import module 'lambda_function': cannot import name '_AES'

我检查了this问题并从这个 git 存储库下载了 pycrypto 包,进行了构建并将结果复制到我的 lambda 文件夹中,打包了它但仍然不起作用。

我检查了构建的结果,我注意到在此文件夹中:

pycrypto-2.6.1/build/lib.linux-x86_64-3.7/Crypto/Cipher

生成的 AES 文件具有与我的 Mac 操作系统相关的扩展名

Mac Cipher files

我尝试在 Linux EC2 实例上构建包,但仍然遇到相同的错误(尽管文件发生了变化)

Linux Cipher Files

我根据以下问题尝试了一条新路径,但仍然失败并出现完全相同的错误。

"errorMessage": "Unable to import module 'lambda_function'"

为什么 AWS Lambda 无法读取 pycrypto 包中的 AES 模块?我已经使用其他外部库部署了 Lambda 函数,但从未遇到过这个问题。

最佳答案

这对我来说现在使用 python2 有效:

https://www.github.com/Doerge/awslambda-pycrypto

我刚刚下载了这个项目,并使用 Cryptopycrypto-2.6.1.dist-info 压缩了我的 lambda_function.py 文件文件夹。

我发现 Crypto/Cipher/ 中编译的 .so 文件(如 _AES.so)缺少 python 版本和操作系统架构和我的发行版(即:AES.cpython-27m-x86_64-linux-gnu.so)。如果我找到一种方法来自己正确构建包而不是使用第三方编译的库,我将更新我的答案。

关于python - 解决 无法导入模块 'lambda_function' : cannot import name '_AES' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56775625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com