繁体   English   中英

错误:使用 python 3.8.7 版本的 AWS Lambda 中没有名为“psycopg2.__psycopg”的模块

[英]Error: No Module Named 'psycopg2.__psycopg' in AWS Lambda with python 3.8.7 version

我已经在 window 10(python 版本 3.8.7)中安装了 psycopg2==2.8.6 模块,我可以毫无问题地导入我的代码。 但是当我压缩并将其上传到 AWS Lambda 时出现此错误。 所有库文件夹都在正确的位置,AWS 也带有 python 3.8.7 但不确定为什么会出现此错误。 我试图降级 psycopg2=2.8.5 但没有运气。 请在优先级上提供一些帮助

您的问题暗示您已经在Windows上下载了psycopg2库,并试图在 Lambda 运行时环境中使用相同的库,最终使用Linux操作系统。

Lambda 运行时环境上的 AWS 文档提供了更多文档,但要使其正常工作,您几乎没有选择

  1. 运行亚马逊提供的 Linux 容器,在其中安装 zip 依赖项。 您可以通过在项目文件夹中运行以下命令来实现此目的
$ docker run --rm -v $PWD:/src --entrypoint '' amazon/aws-lambda-python:3.8 bash
# execute below within container
$ pip3 install psycopg2-binary -t /src/lambdalib

或者,您可以在 Linux 平台上构建扩展,在该容器中使用以下

$ docker run --rm -v $PWD:/src --entrypoint '' amazon/aws-lambda-python:3.8 bash
# execute below within container
$ yum -y install cmake c++ gcc postgresql-devel && pip3 install psycopg2 -t /src/lambdalib

这将在您的psycopg2文件夹中安装 Psycopg2 的lambdalib二进制版本。 我建议您从云控制台执行此操作,或者如果 Windows 工作站没有,则从 Cloud9 IDE 执行

  1. psycopg2搜索公开可用的Lambda 层,将其添加到您的 lambda function 中,并避免完全打包此库。

我们可以让 AWS Chalice 使用 python3 和 requiremetns 部署 lambda function

requests
psycopg2-binary

确保运行chalice的环境具有默认的 python 版本 3(我们可以使用 symlink ln -s /usr/bin/python3.8 /usr/bin/python

⚡ $ chalice --version
chalice 1.21.6, python 3.8.5, linux 5.8.0-49-generic

完整解决方案: https://dev.to/vumdao/connect-postgres-database-using-lambda-function-1mca

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM