i download(pip install pysftp),制作zip文件并在lambda函数中上传。但是它在lambda函数中无法使用。投掷错误。
响应:
{
"errorMessage": "Unable to import module 'lambda_function': cannot import name '_bcrypt' from 'bcrypt' (./lib/bcrypt/__init__.py)",
"errorType": "Runtime.ImportModuleError"
}
很多事先感谢您。
操作" pip install pysftp"将在Linux分布中执行,以准备AWS lambda的LIB。我曾在Windows上使用docker中的Ubuntu在安装卷上执行PIP安装以生成Lib。
尝试重新安装软件包并上传新软件包。如果仍然显示错误,请将开发环境从Windows移动到Linux。参考的类似类型的错误:[1]:https://forums.aws.amazon.com/thread.jspa?messageId=804753&tstart=0
由于您需要对模块依赖性进行故障排除,因此必须检查AWS lambda的Python运行时环境。
在您的AWS lambda中,打印已加载的模块,因此可用于代码导入的其他模块。
def lambda_handler(event, context):
print (help("modules"))
在Python解释器中运行此功能。
python
help("modules")
您将看到Please wait a moment while I gather a list of all available modules...
,然后看到可导入的可用模块的大列表。
您会发现您缺少bcrypt
,因为在help(bcrypt)
所教的该模块中,您会发现丢失的依赖关系_bcrypt
。
应bcrypt可用于lambda或仅是python的解释器,以这种方式找到。
>>> bcrypt._bcrypt
<module 'bcrypt._bcrypt' from '/usr/local/lib/python2.7/site-packages/bcrypt/_bcrypt.so'>
要在同一目录中安装所有内容,请使用以下命令
pip install pysftp -t .
之后,将整个dir&amp;上传到lambda控制台。小旧技巧可以帮助那些第一次使用lambda的人...