У меня есть следующая лямбда-функция:
import pandas as pd
def lambda_handler(events, context):
d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)
print(df)
У меня есть панды (и зависимости), включенные в качестве слоя. Я вижу, что в файлах есть numpy и другие зависимости (с другими файлами и папками):
python/lib/python3.11/site-packages/numpy
python/lib/python3.11/site-packages/numpy-1.26.4.dist-info
Когда я запускаю функцию, я получаю следующую ошибку:
{
"errorMessage": "Unable to import module 'lambda_function': Unable to import required dependencies:\nnumpy: Error importing numpy: you should not try to import numpy from\n its source directory; please exit the numpy source tree, and relaunch\n your python interpreter from there.",
"errorType": "Runtime.ImportModuleError",
"requestId": "ebf17462-e3c2-40c0-9a44-a751882ab7d8",
"stackTrace": []
}
Есть идеи, почему я получаю эту ошибку?






Эта ошибка часто возникает из-за того, что версия Pandas в вашем пакете развертывания несовместима со средой выполнения Lambda. Pandas содержит собственные двоичные файлы, поэтому вам необходимо включить версию, совместимую с Amazon Linux, и архитектуру, которую вы настроили для своей функции.
В этом разделе руководства для разработчиков Lambda содержатся хорошие инструкции о том, как обращаться с собственными двоичными файлами при развертывании функций с помощью Python: https://docs.aws.amazon.com/lambda/latest/dg/python-package.html#python-package-native-libraries
Кажется, ошибка «вы не должны пытаться импортировать numpy из исходного каталога» указывает на то, что numpy не может найти/распознать расширения C (см. stackoverflow.com/a/14572759/202168 stackoverflow.com/a/ 46749418/202168 ) необходимо установить numpy на машину Amazon Linux 2 (например, в Docker-контейнер) и скопировать оттуда пакеты сайта. Пример приложения AWS имеет это github.com/awsdocs/aws-lambda-developer-guide/blob/main/… то есть возьмите предварительно созданное колесо для соответствующей платформы. Или github.com/mlpacks/aws-lambda-numpy