无法导入模块“lambda_function”:没有名为 * 的模块

我正在尝试运行一个使用附加包的 python lambda 函数。然而,每当我将 .zip 文件上传到 lambda 控制台时,我都会收到错误:


{

  "errorMessage": "Unable to import module 'lambda_function': No module named '*'",

  "errorType": "Runtime.ImportModuleError"

}

我按照以下说明进行操作:https://docs.aws.amazon.com/lambda/latest/dg/python-package.html#python-package-dependency它告诉我确保我的包位于我的 lambda 本地目录中功能:


~/my-function$ pip install --target ./package Pillow

我没有使用枕头。这是他们网站上的示例代码。我也没有使用您可以在 Lambda 上访问的包。这是我从 github 获得的,需要附加到我的应用程序中。


起初这不起作用,所以我创建了一个setup.cfg文件并添加了:


[install]

prefix= 

现在,当我使用pip命令安装到目标时,它可以工作(并且还添加了除我的包之外的其他文件夹的负载,但我认为需要它们,所以我将它们留在那里。


当我进入目录时,包就在那里。


然后我找到了这个答案:https://stackoverflow.com/a/12493244/5675125,这表明可能没有包含一些隐藏文件,这就是我应该压缩它们的方式。


又出现同样的错误。


我如何让 lambda 识别出我的包裹在那里。


白板的微信
浏览 124回答 1
1回答

千万里不及你

我刚刚创建了自定义图层instabot,可以确认它是否有效。使用的技术包括最近的AWS 博客中描述的docker 工具:如何使用 Docker 模拟 Lambda 环境创建 Lambda 层?于是针对这个问题,我验证 如下:创建空文件夹,例如mylayer.转到该文件夹并创建requirements.txt包含以下内容的文件instabot运行以下 Docker 命令:docker run -v "$PWD":/var/task "lambci/lambda:build-python3.8" /bin/sh -c "pip install -r requirements.txt -t python/lib/python3.8/site-packages/; exit"删除numpy要求非常大instabot。numpy因此,我们在创建图层之前手动将其删除。我们将使用numpyAWS 提供的层。sudo rm -rvf ./python/lib/python3.8/site-packages/numpy*如果我们不删除 numpy,该层将>50MB。创建图层为 zip:zip -9 -r mylayer.zip pythonmylayer.zip在AWS控制台中创建基于的lambda层。不要忘记指定Compatible runtimes为python3.8.向您的函数添加两层:第一个是AWSLambda-Python38-SciPy1xAWS 随 numpy 提供的,第二个是我们上面创建的。所以你的函数将使用两层。使用以下 lambda 函数测试 lambda 中的层:import jsonfrom instabot import Botdef lambda_handler(event, context):    # TODO implement        bot = Bot(base_path='/tmp')        return {        'statusCode': 200,        'body': json.dumps('Hello from Lambda!')    }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python