我已经用python文件和依赖项(包括sqlalchemy和psycopg2 )为AWS创建了一个部署包。代码在本地访问DB时工作得很好。但是当我导入这个zip文件时,我会得到以下错误。
No module named 'psycopg2._psycopg': ModuleNotFoundError
错误的堆栈跟踪是,
{
"errorMessage": "No module named 'psycopg2._psycopg'",
"errorType": "ModuleNotFoundError",
"stackTrace": [
[
"/var/task/DBAccessLamdaHandler.py",
50,
"lambda_handler",
"engine = create_engine(rds_host)"
],
[
"/var/task/sqlalchemy/engine/__init__.py",
387,
"create_engine",
"return strategy.create(*args, **kwargs)"
],
[
"/var/task/sqlalchemy/engine/strategies.py",
80,
"create",
"dbapi = dialect_cls.dbapi(**dbapi_args)"
],
[
"/var/task/sqlalchemy/dialects/postgresql/psycopg2.py",
554,
"dbapi",
"import psycopg2"
],
[
"/var/task/psycopg2/__init__.py",
50,
"<module>",
"from psycopg2._psycopg import ( # noqa"
]
]
}
任何帮助都是值得赞赏的。
发布于 2017-07-01 14:18:27
AWS运行时环境不包括PostgreSQL库,因此您需要将它们包含在AWS上传中。
实现这一目标的一种方法是从GitHub的GitHub回购系统中获取它们。请注意,您不需要从头构建这个项目,因为回购包括一个预先构建的包在psycopg2文件夹中,您可以简单地包含在您的Lambda上传。
发布于 2019-05-07 15:19:23
来自jkehler/awslambda-psycopg2 2的jkehler/awslambda-psycopg2 2构建库是为python3.6构建的,并确保在将代码上传到AWS时,选择python环境作为3.6,它应该可以工作。我把头撞了一整天,然后当我换到3.6的时候,进口错误就消失了。
如果您打算自己构建它,请记住,必须在具有与AWS目标相同的体系结构的机器或VM上构建。。
发布于 2022-04-01 13:58:59
和其他答案一样,phocopg2-binaryforpython3.9(看起来其他软件包awslambda-psycopg2
只适用于python3.6)。
但是,如果在发送到aws lambda之前在MacOs上运行,则必须将平台指定为您的pip安装,如下所示:
pip3.9 install --platform=manylinux1_x86_64 --only-binary=:all: psycopg2-binary
https://stackoverflow.com/questions/44855531
复制相似问题