brew install python
, чтобы установить python 3.7.3pip install numpy --target .
Так что я могу запускать свой код локально, и у меня нет проблем. Я pandas, matplotlib, boto3 и mpld3 для организации и отображения данных в таблице AWS DDB с графиками matplotlib, которые mpld3 превращает в html. numpy, по-видимому, необходим для панд, и всякий раз, когда я пытаюсь установить эти библиотеки в целевой каталог, чтобы они могли работать в лямбда-функции, согласно https://docs.aws.amazon.com/lambda/latest/dg/lambda -python-how-to-create-deployment-package.html , я получаю следующую ошибку:
```ВАЖНО: ПОЖАЛУЙСТА, ПРОЧИТАЙТЕ ЭТО, ЧТОБЫ ПОЛУЧИТЬ СОВЕТЫ ПО РЕШЕНИЮ ЭТОЙ ПРОБЛЕМЫ!
Не удалось импортировать модуль расширения multiarray numpy. Большинство
вероятно, вы пытаетесь импортировать неудачную сборку numpy.
Вот как это сделать:
git clean -xdf
Note: this error has many possible causes, so please don't comment on
an existing issue about this - open a new one instead.
Исходная ошибка: нет модуля с именем «numpy.core._multiarray_umath».
END RequestId: 2fc65f50-420d-441b-930c-665b1c8ab3ea
REPORT RequestId: 2fc65f50-420d-441b-930c-665b1c8ab3ea Продолжительность: 0,85 мс Продолжительность выставления счета: 100 мс Размер памяти: 128 МБ Макс. используемая память: 40 МБ ```
Чтобы изолировать проблему, я повторил вышеописанное с помощью:
def main(event, context):
a = 100
print(a)
return
а также
import numpy as np
def main(event, context):
a = np.array(100)
print(a)
return
Оба файла были заархивированы в каталог package
, содержащий целевую установку numpy в соответствии с https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment- пакет.html. После архивирования файлы были ~ 16 МБ, поэтому у них была установка numpy. Первый пример, который не импортировал numpy, отлично работает при тестировании лямбда-функции, но второй выдает ошибку с исходным сообщением об ошибке.
Это руководство по AWS не рассказывает вам всю историю. Дистрибутив Amazon Linux несовместим с обычной установкой NumPy, такой как PyPi или conda-forge.
Я предлагаю вам следовать одному из этих руководств или использовать zip-файл из одного из этих репозиториев:
https://medium.com/@samme/setting -up-python-3-6-aws-lambda-deployment-package-with-numpy-scipy-pillow-and-scikit-image-de488b2afca6
https://medium.com/@korniichuk/lambda-with-pandas-fd81aa2ff25e
https://blog.orikami.nl/building-scipy-pandas-and-numpy-for-aws-lambda-python-3-6-cba9355b44e9
https://github.com/pbegle/aws-лямбда-py3.6-пандас-numpy
https://github.com/vitolimandibhrata/aws-лямбда-numpy
Это не ошибка NumPy, поэтому я закрою тему.
Спасибо,
Я ценю ваш ответ. К вашему сведению, мне удалось заставить его работать, инициировав экземпляр EC2 с ОС AWS Linux и установив туда библиотеки. Все работало отлично.
Спасибо за помощь,
Ли
Получите Outlook для iOS https://aka.ms/o0ukef
От: Ральф Гоммерс[email protected]
Отправлено: суббота, 4 мая 2019 г., 6:52
Кому: numpy/numpy
Копия: Ли Джеймс; Автор
Тема: Re: [numpy/numpy] Невозможно импортировать numpy в функцию AWS Lambda (#13465)
Это руководство по AWS не рассказывает вам всю историю. Дистрибутив Amazon Linux несовместим с обычной установкой NumPy, такой как PyPi или conda-forge.
Я предлагаю вам следовать одному из этих руководств или использовать zip-файл из одного из этих репозиториев:
https://medium.com/@samme/setting-up-python-3-6-aws-lambda-deployment-package-with-numpy-scipy-pillow-and-scikit-image-de488b2afca6 https://urldefense. proofpoint.com/v2/url?u=https-3A__medium.com_-40samme_setting-2Dup-2Dpython-2D3-2D6-2Daws-2Dlambda-2Ddeployment-2Dpackage-2Dwith-2Dnumpy-2Dscipy-2Dpillow-2Dand-2Dscikit-2Dimage-2Dde488b2afca6&d= DwMCaQ&c=0hefKdg9jtsMu47wpF0ovg&r=2qmZ2aA-JTvfrp24tI1PaA&m=o4NpaNDNU2z8VYtFVRO3Z-KgjOittvdP3EKrsYfomhs&s=ZKkVD6L0iXq9wAG929BSTikIAEun9eeS4ZdgUw1Q8oY
https://medium.com/@korniichuk/lambda-with-pandas-fd81aa2ff25e https://urldefense.proofpoint.com/v2/url?u=https-3A__medium.com_-40korniichuk_lambda-2Dwith-2Dpandas-2Dfd81aa2ff25e&d=DwMCaQ&c= 0hefKdg9jtsMu47wpF0ovg&r=2qmZ2aA-JTvfrp24tI1PaA&m=o4NpaNDNU2z8VYtFVRO3Z-KgjOittvdP3EKrsYfomhs&s=PQOBXsoiGwGl3XWjQFqEbAK77Kg9THTSlEZOmLQNiJo&e=
https://blog.orikami.nl/building-scipy-pandas-and-numpy-for-aws-lambda-python-3-6-cba9355b44e9 https://urldefense.proofpoint.com/v2/url?u=https -3A__blog.orikami.nl_building-2Dscipy-2Dpandas-2Dand-2Dnumpy-2Dfor-2Daws-2Dlambda-2Dpython-2D3-2D6-2Dcba9355b44e9 & д = DwMCaQ & с = 0hefKdg9jtsMu47wpF0ovg & г = 2qmZ2aA-JTvfrp24tI1PaA & т = o4NpaNDNU2z8VYtFVRO3Z-KgjOittvdP3EKrsYfomhs & s = jm1X8lQ78YL30-NRN2kXnOGAhMS1LKSowIOFQMCpq5Y & е =
https://github.com/pbegle/aws-lambda-py3.6-pandas-numpy https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_pbegle_aws-2Dlambda-2Dpy3.6-2Dpandas -2Dnumpy&d=DwMCaQ&c=0hefKdg9jtsMu47wpF0ovg&r=2qmZ2aA-JTvfrp24tI1PaA&m=o4NpaNDNU2z8VYtFVRO3Z-KgjOittvdP3EKrsYfomhs&s=708JPsyiBrAUC0pdCf1QwuLcJ4dEWunFNus
https://github.com/vitolimandibhrata/aws-lambda-numpy https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_vitolimandibhrata_aws-2Dlambda-2Dnumpy&d=DwMCaQ&c=0hefKdg9jtsMu47wpF0ovg&r=2qmZ2aA-JTvfrp24tI1PaA&m=o4NpaNDNU2z8VYtFVRO3Z -KgjOittvdP3EKrsYfomhs&s=poqmiFo_VPWUjgf2NEI4vBxzANNWtRm3sXSUypHO88w&e=
Это не ошибка NumPy, поэтому я закрою тему.
—
Вы получаете это, потому что вы создали тему.
Ответить на это сообщение непосредственно, просматривать его на GitHub https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_numpy_numpy_issues_13465-23issuecomment-2D489329007&d=DwMCaQ&c=0hefKdg9jtsMu47wpF0ovg&r=2qmZ2aA-JTvfrp24tI1PaA&m=o4NpaNDNU2z8VYtFVRO3Z-KgjOittvdP3EKrsYfomhs&s=J7VXklMAkObDeLGzi_DueXIZ7gya0qrVm9tZhLH9dzI&e= или приглушить нить https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notifications_unsubscribe-2Dauth_AHKHI4N5E7XURJJTX7INB6LPTWIJVANCNFSM4HKX25DQ&d=DwMCaQ&c=0hefKdg9jtsMu47wpF0ovg&r=2qmZ2aA-JTvfrp24tI1PaA&m=o4NpaNDNU2z8VYtFVRO3Z-KgjOittvdP3EKrsYfomhs&s=zMXEEFbVt2bm8P0Cn2aJbHDaSdV0ABZ_hgsaB2AWUWg&e= .
@rgommers Знаете ли вы какие-либо способы, связанные с python3.7, по этому поводу. Я пробовал пару из вашего списка 3.6 и всегда получал одни и те же жалобы на библиотеку _multiarray. Мне нужно создать «слой» AWS, поскольку нужная мне комбинация (numpy, scipy, pandas) превышает допустимый размер одной функции.
@iceback , если ваша ошибка была похожа на ту, что была у меня, а именно No module named 'numpy.core._multiarray_umath'
, это вызвано тем, что numpy не был установлен с правильной ОС.
AWS lambda будет запускать AWS linux во время выполнения, поэтому любые целевые пакеты должны быть установлены с соответствующей ОС. Если вы нацелены установить numpy
в каталог package
через pip install --target ./package numpy
и используете другую ОС (например, macOS), то это не удастся, поскольку целевая установка предполагает, что ОС не изменится с вашей родной ОС.
Чтобы обойти это, у вас есть два варианта:
Мне придется пересмотреть все, что я пробовал на прошлой неделе, включая @korniichuk и github/pbegle, и бог знает что еще, но всегда оказывалось в одном и том же месте. Создание numpy на EC2 идет не очень хорошо. Возможно, неправильная версия Cython (в aws linux доступна только 0.27). Не могли бы вы уточнить свой номер 1. Как перейти от установленного numpy на одном экземпляре к слою на Lambda?
@iceback Да, это было неприятно, когда я впервые сделал это, но это определенно возможно. В настоящее время я запускаю функции Lambda с Python 3.7 с тремя упомянутыми вами пакетами.
То, как я выполнил шаг 1. выше, включало в себя выполнение шагов, описанных в разделе « Обновление функции с дополнительными зависимостями », описанном здесь . Для простоты я предполагаю, что ваш локальный файл Python называется _pony.py_, а функция lambda_function вызывается с помощью функции _ride_pony_.
sudo yum install python3 -y
mkdir package
python3 -m pip install --target ./package numpy
python3 -m pip install --target ./package pandas
python3 -m pip install --target ./package scipy
cd package
zip -r9 ../pony.zip .
zip -g pony.zip pony.py
. Ваш ZIP-файл теперь содержит ваш лямбда-код вместе с необходимыми модулями Python, которые были установлены для работы с ОС AWS Linux.**Убедитесь, что ваша лямбда-функция указывает и выполняет ваше имя файла и основную функцию, _pony.ride_pony_, если это не _lambda_function.lambda_handler_ по умолчанию.
Спасибо большое. Я верю, что у меня есть шанс! (Насколько я понимаю, верхняя часть почтового индекса должна быть «python» для слоя Lambda, поэтому я буду использовать это вместо «package»)
Кричи это как-то громко и с гордостью! Не уверен, где я нарушил другое предложение (хотя они были для python3.6), но теперь я вернулся к работе над своим кодом функции. Благодаря тонну.
Теперь AWS также опубликовал слой, включающий NumPy и SciPy. Из https://aws.amazon.com/blogs/aws/new-for-aws-lambda-use-any-programming-language-and-share-common-components/
_Основываясь на отзывах наших клиентов и чтобы показать пример использования Lambda Layers, мы публикуем общедоступный слой, который включает NumPy и SciPy, две популярные научные библиотеки для Python. Этот предварительно созданный и оптимизированный слой поможет вам очень быстро приступить к работе с приложениями для обработки данных и машинного обучения._
Хм, неужели слишком много документации по AWX? ;)
23 октября 2019 г., в 4:29, Ральф Гоммерс, [email protected] , написал:
Теперь AWS также опубликовал слой, включающий NumPy и SciPy. Из https://aws.amazon.com/blogs/aws/new-for-aws-lambda-use-any-programming-language-and-share-common-components/ https://aws.amazon.com/blogs /aws/new-for-aws-lambda-use-any-programming-language-and-share-common-components/
Основываясь на отзывах наших клиентов и чтобы показать пример использования Lambda Layers, мы публикуем общедоступный слой, который включает NumPy и SciPy, две популярные научные библиотеки для Python. Этот предварительно созданный и оптимизированный уровень поможет вам очень быстро приступить к работе с приложениями для обработки данных и машинного обучения.—
Вы получаете это, потому что вас упомянули.
Ответить на это сообщение непосредственно, просматривать его на GitHub https://github.com/numpy/numpy/issues/13465?email_source=notifications&email_token=AACY7PDHEVUY6IGQ6IXVXPLQQARRNA5CNFSM4HKX25D2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECA5ACQ#issuecomment-545378314 или отписки https://github.com/notifications/unsubscribe- auth/AACY7PFK3DUQOBMT5QA2ID3QQARRNANCNFSM4HKX25DQ .
Что сработало для меня, так это использование Linux-версии библиотеки numpy (я использую macOS). Я зашел на https://pypi.org/project/numpy/#files и скачал файл .whl в версии, которую искал (для меня это был numpy-1.19.0-cp37-cp37m-manylinux1_x86_64.whl) . Затем перейдите в терминал и распакуйте его, выполнив «unzip numpy-1.19.0-cp37-cp37m-manylinux1_x86_64.whl». Это должно дать вам версию numpy, которая будет работать на Lambda. Затем заархивируйте все, как вы делали раньше, и загрузите его. В конце концов невероятно неприятная проблема была решена довольно просто.
У меня была такая же проблема, решение, которое сработало для меня, заключается в том, что я удалил numpy со своего компьютера (Windows 7).
затем я добавил слой в лямбда-функцию aws, что-то под названием AWSlambda scipy, и все.
Я столкнулся с той же проблемой в Windows, но смог решить ее одним из следующих способов:
--use-container
, который имеет следующее объяснение в документации :Если ваши функции зависят от пакетов, которые имеют собственные скомпилированные зависимости, используйте этот флаг, чтобы создать свою функцию внутри контейнера Docker, похожего на AWS Lambda.
Самый полезный комментарий
Это руководство по AWS не рассказывает вам всю историю. Дистрибутив Amazon Linux несовместим с обычной установкой NumPy, такой как PyPi или conda-forge.
Я предлагаю вам следовать одному из этих руководств или использовать zip-файл из одного из этих репозиториев:
https://medium.com/@samme/setting -up-python-3-6-aws-lambda-deployment-package-with-numpy-scipy-pillow-and-scikit-image-de488b2afca6
https://medium.com/@korniichuk/lambda-with-pandas-fd81aa2ff25e
https://blog.orikami.nl/building-scipy-pandas-and-numpy-for-aws-lambda-python-3-6-cba9355b44e9
https://github.com/pbegle/aws-лямбда-py3.6-пандас-numpy
https://github.com/vitolimandibhrata/aws-лямбда-numpy
Это не ошибка NumPy, поэтому я закрою тему.