将Python模块导入AWS Lambda

时间:2018-09-19 14:52:17

标签: python postgresql amazon-web-services aws-lambda

我已按照文档中的所有步骤进行操作: https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html

  1. 创建目录。

  2. 将所有Python源文件(.py文件)保存在此目录的根目录下。

  3. 在目录的根级别使用pip安装任何库。

  4. 压缩project-dir目录的内容)

但是将zip文件上传到 lambda 函数后,在测试脚本时出现了错误消息

我的代码:

    import psycopg2
    #my code...

错误:

    Unable to import module 'myfilemane': No module named 'psycopg2._psycopg'

我不知道...的后缀'_psycopg'在哪里

对此有任何帮助吗?

2 个答案:

答案 0 :(得分:0)

我认为这是由于psycopg2需要使用用于Linux的静态链接库来编译而造成的。有关此问题的更多详细信息,请参考Using psycopg2 with Lambda to Update Redshift (Python)。关于在OSX上编译psycopg2的问题的另一个[reference] [1]。

有一些解决方案,但是基本上可以归结为在Linux机器上安装该库并将其用作上传包中的Psycopg2库。

答案 1 :(得分:0)

您正在将本机库与lambda一起使用。我们遇到了类似的问题,这就是我们解决问题的方法。

使用运行了实际lambda的AWS支持的AMI旋转计算机。

https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html

在撰写本文时,

  

AMI名称:amzn-ami-hvm-2017.03.1.20170812-x86_64-gp2

有关安装本机模块python lambda的完整文档。

https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html

安装Lambda所需的必需模块,

  

pip安装模块名称-t / path / to / project-dir

并准备您的软件包以在lambda ami环境下与本机模块一起上传。

希望这会有所帮助。