brew install python
para instalar o python 3.7.3pip install numpy --target .
Assim, consigo executar meu código localmente e não tenho problemas. Eu sou pandas, matplotlib, boto3 e mpld3 para organizar e exibir dados em uma tabela DDB da AWS com gráficos matplotlib que o mpld3 transforma em html. numpy parece ser necessário para pandas e sempre que tento instalar essas bibliotecas em um diretório de destino para que possam ser executadas em uma função lambda, de acordo com https://docs.aws.amazon.com/lambda/latest/dg/lambda -python-how-to-create-deployment-package.html , recebo o seguinte erro:
```IMPORTANTE: POR FAVOR, LEIA ISTO PARA CONSELHOS SOBRE COMO RESOLVER ESTE PROBLEMA!
A importação do módulo de extensão numpy multiarray falhou. Maioria
provavelmente você está tentando importar uma compilação com falha de numpy.
Aqui está como proceder:
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.
O erro original era: Nenhum módulo chamado 'numpy.core._multiarray_umath'
END RequestId: 2fc65f50-420d-441b-930c-665b1c8ab3ea
REPORT RequestId: 2fc65f50-420d-441b-930c-665b1c8ab3ea Duração: 0,85 ms Duração faturada: 100 ms Tamanho da memória: 128 MB Memória máxima usada: 40 MB ```
Para isolar o problema, tentei o acima com:
def main(event, context):
a = 100
print(a)
return
e
import numpy as np
def main(event, context):
a = np.array(100)
print(a)
return
Ambos os arquivos foram compactados em um diretório package
contendo uma instalação direcionada do numpy de acordo com https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment- pacote.html. Após a compactação, os arquivos ficaram com ~ 16 MB, então eles tiveram a instalação numpy. O primeiro exemplo que não importou numpy funciona bem ao testar a função Lambda, mas o segundo erro com a mensagem de erro original
Esse guia da AWS não está contando toda a história. A distribuição do Amazon Linux não é compatível com uma instalação normal do NumPy, como do PyPi ou conda-forge.
Sugiro que você siga um desses guias ou use um arquivo zip de um desses repositórios:
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-lambda-py3.6-pandas-numpy
https://github.com/vitolimandibhrata/aws-lambda-numpy
Este não é um bug do NumPy, então fecharei o problema.
Obrigado,
Eu aprecio sua resposta. Para sua informação, consegui fazê-lo funcionar iniciando uma instância do EC2 com o sistema operacional AWS Linux e instalei as bibliotecas lá. Tudo funcionou muito bem.
Obrigado pela ajuda,
Lee
Obtenha o Outlook para iOS https://aka.ms/o0ukef
De: Ralf Gommers [email protected]
Enviado: sábado, 4 de maio de 2019 06:52
Para: numpy/numpy
CC: Lee James; Autor
Assunto: Re: [numpy/numpy] Não é possível importar numpy na função AWS Lambda (#13465)
Esse guia da AWS não está contando toda a história. A distribuição do Amazon Linux não é compatível com uma instalação normal do NumPy, como do PyPi ou conda-forge.
Sugiro que você siga um desses guias ou use um arquivo zip de um desses repositórios:
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&e=
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 & d = DwMCaQ & c = 0hefKdg9jtsMu47wpF0ovg & r = 2qmZ2aA-JTvfrp24tI1PaA & m = o4NpaNDNU2z8VYtFVRO3Z-KgjOittvdP3EKrsYfomhs & s = jm1X8lQ78YL30-NRN2kXnOGAhMS1LKSowIOFQMCpq5Y & e =
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=708JPsyiAUC0pdCf1QwuLz=J4dEWunFnuZ
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=
Este não é um bug do NumPy, então fecharei o problema.
—
Você está recebendo isso porque foi o autor do tópico.
Responda a este e-mail diretamente, vê-lo no 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= , ou silenciar o fio 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 Você conhece alguma tática relacionada ao python3.7 sobre isso. Eu tentei alguns da sua lista de 3.6 e sempre acabo com a mesma reclamação sobre o _multiarray lib. Eu preciso fazer uma "camada" da AWS, pois a combinação que preciso (numpy,scipy,pandas) excede o limite de tamanho de uma única função.
@iceback se o seu erro foi semelhante ao que eu tive, que era No module named 'numpy.core._multiarray_umath'
, isso é causado por não instalar o numpy com o sistema operacional correto.
O AWS lambda executará o AWS linux em tempo de execução, portanto, todos os pacotes instalados no destino devem ser instalados com o sistema operacional adequado. Se você tiver como destino instalar numpy
em um diretório package
por meio pip install --target ./package numpy
e estiver executando outro sistema operacional (como macOS), isso falhará porque a instalação de destino pressupõe que o O sistema operacional não mudará do seu sistema operacional nativo.
Para contornar isso, você tem duas opções:
Vou ter que revisitar todas as coisas que tentei na semana passada, incluindo o @korniichuk e o github/pbegle e o senhor sabe o que mais, mas sempre acabava no mesmo lugar. Construir numpy em um EC2 não está indo bem. Talvez versão errada do Cython (apenas 0,27 disponível no aws linux). Você pode detalhar o seu #1. Como você passa de um numpy instalado em uma instância para uma camada no Lambda?
@iceback Ya, isso foi frustrante quando fiz isso pela primeira vez, mas é definitivamente possível. Atualmente executo funções Lambda com Python 3.7 com os 3 pacotes que você mencionou.
Como eu executei a etapa 1. acima envolveu seguir as etapas descritas em Atualizando uma Função com Dependências Adicionais , descritas aqui . Para simplificar, vou assumir que seu arquivo python local é chamado _pony.py_ e a função lambda_ é invocada com a função _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
. Seu arquivo zip agora contém seu código lambda junto com os módulos python necessários, que foram instalados para destino com um sistema operacional AWS Linux.**Certifique-se de que sua função lambda aponte para e execute seu nome de arquivo e função principal, _pony.ride_pony_, se não for o padrão _lambda_function.lambda_handler_
Muito obrigado. Eu acredito que eu tenho um tiro! (Meu entendimento é que a parte superior do zip deve ser "python" para uma camada Lambda, então usarei isso em vez de "pacote")
Grite esse how-to em voz alta e orgulhoso! Não tenho certeza de onde errei com a outra sugestão (embora fossem para python3.6), mas agora estou de volta a trabalhar no meu código de função. Obrigado uma tonelada.
A AWS agora também publicou uma camada que inclui NumPy e SciPy. De https://aws.amazon.com/blogs/aws/new-for-aws-lambda-use-any-programming-language-and-share-common-components/
_Com base no feedback de nossos clientes e para fornecer um exemplo de como usar as Camadas Lambda, estamos publicando uma camada pública que inclui NumPy e SciPy, duas bibliotecas científicas populares para Python. Essa camada pré-criada e otimizada pode ajudá-lo a começar muito rapidamente com aplicativos de processamento de dados e aprendizado de máquina._
Hm, poderia haver muita documentação AWX? ;)
Em 23 de outubro de 2019, às 4h29, Ralf Gommers [email protected] escreveu:
A AWS agora também publicou uma camada que inclui NumPy e SciPy. De 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/
Com base no feedback de nossos clientes e para fornecer um exemplo de como usar Lambda Layers, estamos publicando uma camada pública que inclui NumPy e SciPy, duas bibliotecas científicas populares para Python. Essa camada pré-criada e otimizada pode ajudá-lo a começar muito rapidamente com aplicativos de processamento de dados e aprendizado de máquina.—
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, vê-lo no GitHub https://github.com/numpy/numpy/issues/13465?email_source=notifications&email_token=AACY7PDHEVUY6IGQ6IXVXPLQQARRNA5CNFSM4HKX25D2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECA5ACQ#issuecomment-545378314 , ou unsubscribe https://github.com/notifications/unsubscribe- auth/AACY7PFK3DUQOBMT5QA2ID3QQARRNANCNFSM4HKX25DQ .
O que funcionou para mim foi usar uma versão Linux da biblioteca numpy (eu uso o macOS). Fui em https://pypi.org/project/numpy/#files e baixei o arquivo .whl na versão que estava procurando (para mim, era numpy-1.19.0-cp37-cp37m-manylinux1_x86_64.whl) . Em seguida, vá para o terminal e descompacte-o fazendo 'unzip numpy-1.19.0-cp37-cp37m-manylinux1_x86_64.whl'. Isso deve fornecer a versão numpy que funcionará no Lambda. Em seguida, feche tudo como você estava fazendo antes e faça o upload. No final, um problema incrivelmente frustrante foi resolvido de forma bastante simples.
Eu tive o mesmo problema, a solução que funcionou para mim é que eu desinstalei o numpy do meu pc (windows 7).
do que eu adicionei camada na função aws lambda algo chamado AWSlambda scipy e é isso.
Eu me deparei com o mesmo problema com o Windows, mas consegui resolvê-lo por uma das seguintes abordagens:
--use-container
, que tem a seguinte explicação na documentação :Se suas funções dependem de pacotes que têm dependências compiladas nativamente, use esse sinalizador para criar sua função dentro de um contêiner do Docker semelhante ao AWS Lambda.
Comentários muito úteis
Esse guia da AWS não está contando toda a história. A distribuição do Amazon Linux não é compatível com uma instalação normal do NumPy, como do PyPi ou conda-forge.
Sugiro que você siga um desses guias ou use um arquivo zip de um desses repositórios:
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-lambda-py3.6-pandas-numpy
https://github.com/vitolimandibhrata/aws-lambda-numpy
Este não é um bug do NumPy, então fecharei o problema.