![](/img/trans.png)
[英]Why is installing python-psycopg2 on my Docker image not preventing the subsequent "No module named 'psycopg2'" error?
[英]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 文档提供了更多文档,但要使其正常工作,您几乎没有选择
$ 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 执行
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.