Импортировать модуль Python в AWS Lambda

Я выполнил все шаги, указанные в документации: https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html

  1. создать каталог.

  2. Сохраните все ваши исходные файлы Python (файлы .py) на корневом уровне этого каталога.

  3. Установите любые библиотеки с помощью pip на корневом уровне каталога.

  4. Заархивируйте содержимое каталога project-dir)

Но после того, как я загрузил zip-файл в функцию лямбда, я получил сообщение об ошибке при тестировании скрипта

мой код:

    import psycopg2
    #my code...

Ошибка:

    Unable to import module 'myfilemane': No module named 'psycopg2._psycopg'

Не знаю, откуда суффикс '_psycopg' ...

Любая помощь по этому поводу?

Какую операционную систему вы использовали для создания библиотеки psycopg2? Просто любопытно - вы должны использовать Linux, чтобы это работало

KiteCoder 19.09.2018 18:26

@KiteCoder Вы мне напомнили ... Я использовал систему Windows ... Я попробую с Linux ... спасибо

wendybear 20.09.2018 10:39
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
2
11 885
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я считаю, что это вызвано тем, что psycopg2 должен быть скомпилирован со статически связанными библиотеками для Linux. Пожалуйста, обратитесь к Использование psycopg2 с Lambda для обновления Redshift (Python) для получения более подробной информации по этой проблеме. Еще одна [ссылка] [1] проблем компиляции psycopg2 на OSX.

Есть несколько решений, но в основном все сводится к установке библиотеки на Linux-машине и ее использованию в качестве библиотеки Psycopg2 в вашем загружаемом пакете.

Вы используете собственные библиотеки с лямбдой. У нас была похожая проблема, и вот как мы ее решили.

Запустите машину с AMI с поддержкой AWS, которая запускает вашу настоящую лямбду.

https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html

Как это написано, это

AMI name: amzn-ami-hvm-2017.03.1.20170812-x86_64-gp2

Полная документация по установке собственных модулей вашей лямбда-выражения Python.

https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html

Установите необходимые модули, необходимые для вашей лямбды,

pip install module-name -t /path/to/project-dir

и подготовьте свой пакет для загрузки вместе с собственными модулями в среде лямбда-ами.

Надеюсь это поможет.

очень полезный ответ.

Konchog 03.06.2021 13:22

Другие вопросы по теме