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).
Schreibe einen Kommentar