Kein Modul mit dem Namen 'psycopg2._psycopg': ModuleNotFoundError in AWS Lambda
Ich erstellt habe, ein Bereitstellung-Paket für AWS Lambda mit meinem python-Datei und die Abhängigkeiten einschließlich sqlalchemy und psycopg2. Der code funktioniert perfekt, beim Zugriff auf die DB lokal. Aber wenn ich importierte zip Datei, ich erhalte die folgende Fehlermeldung.
No module named 'psycopg2._psycopg': ModuleNotFoundError
Den stack-trace des Fehlers ist,
{
"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"
]
]
}
Jede Hilfe ist spürbar
- Siehe github.com/jkehler/awslambda-psycopg2.
- Sie nicht brauchen, um zu bauen es von Grund auf. Das repo enthält eine pre-built-Paket in der psycopg2 Ordner, können Sie einfach in die ZIP-Datei, die Sie hochladen, um die Lambda (angeblich, ich habe nicht wirklich verwendet es).
Du musst angemeldet sein, um einen Kommentar abzugeben.
AWS Lambda-runtime-Umgebung beinhaltet nicht die PostgreSQL-Bibliotheken, so dass Sie brauchen, um Sie innerhalb Ihres AWS Lambda hochladen.
Einen Weg, dies zu tun ist, um Sie von der jkehler/awslambda-psycopg2 repo auf GitHub. Beachten Sie, dass Sie nicht brauchen, um dieses Projekt aufzubauen von Grund auf, wie das repo enthält eine pre-built-Paket in der psycopg2 Ordner, dass können Sie einfach in Ihren Lambda-upload.
Den psycopg2 bauen Bibliothek von jkehler/awslambda-psycopg2 wurde gebaut für den python-3.6, und stellen Sie sicher, dass beim hochladen von code auf AWS lambda, wählen Sie die Python-Laufzeitumgebung als 3.6, und es sollte funktionieren. Ich schlug meinen Kopf auf das für einen ganzen Tag und wenn ich dann geändert auf 3,6, die import-Fehler verschwand einfach.
psycopg2
, und zip es mit meiner lambda-Funktion von Datei. Nach dem hochladen der Zip-Datei aws lambda, es funktionierte wie erwartet. Ich nehme an, dass die Verfahren für die python-3.6 sollten ähnlich sein.Dem letzten update psycopg (wenn ich dies beantwortet), dies behebt. Sie tun müssen, aktualisieren Sie die version für psycopg2-binary zu 2.8.4. Das Tat den trick für mich.