Error: No Module Named 'psycopg2.__psycopg' in AWS Lambda with python 3.8.7 version
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
库,并试图在最终使用 Linux
操作系统的 Lambda 运行时环境中使用相同的库。
AWS Documentation on Lambda Runtime Environment 提供了更多文档,但要实现此功能,您的选择很少
- 运行 亚马逊提供了 Linux 容器,在其中安装和压缩依赖项。您可以通过 运行 在您的项目文件夹
中关注来实现此目的
$ 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
这将在您的 lambdalib
文件夹中安装 linux 二进制版本的 psycopg2
。我建议您从云控制台或 Cloud9 IDE 执行此操作,如果 Windows 工作站没有
- 搜索
psycopg2
的公开可用 Lambda Layer,将其添加到您的 lambda 函数中,并避免完全打包此库。
我们可以使用 AWS Chalice 使用 python3 和 requiremetns
来部署 lambda 函数
requests
psycopg2-binary
确保运行 chalice
的环境具有默认的 python 版本 3(我们可以使用符号链接 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
我已经在 window 10(python 版本 3.8.7)中安装了 psycopg2==2.8.6 模块,我可以毫无问题地导入我的代码。但是当我压缩并将其上传到 AWS Lambda 时出现此错误。所有库文件夹都在正确的位置,AWS 也有 python 3.8.7,但不确定为什么会出现此错误。我试图降级 psycopg2=2.8.5 但没有成功。请优先提供一些帮助
您的问题暗示您已经在 Windows
上下载了 psycopg2
库,并试图在最终使用 Linux
操作系统的 Lambda 运行时环境中使用相同的库。
AWS Documentation on Lambda Runtime Environment 提供了更多文档,但要实现此功能,您的选择很少
- 运行 亚马逊提供了 Linux 容器,在其中安装和压缩依赖项。您可以通过 运行 在您的项目文件夹 中关注来实现此目的
$ 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
这将在您的 lambdalib
文件夹中安装 linux 二进制版本的 psycopg2
。我建议您从云控制台或 Cloud9 IDE 执行此操作,如果 Windows 工作站没有
- 搜索
psycopg2
的公开可用 Lambda Layer,将其添加到您的 lambda 函数中,并避免完全打包此库。
我们可以使用 AWS Chalice 使用 python3 和 requiremetns
来部署 lambda 函数requests
psycopg2-binary
确保运行 chalice
的环境具有默认的 python 版本 3(我们可以使用符号链接 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