Pysftp 包在 lambda 函数抛出错误中不起作用:无法从'bcrypt'导入名称'_bcrypt' (./lib/bcrypt/__init__.py)



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的人...

最新更新