brew install python
untuk menginstal python 3.7.3pip install numpy --target .
Jadi saya dapat menjalankan kode saya secara lokal dan saya tidak memiliki masalah. Saya panda, matplotlib, boto3, dan mpld3 untuk mengatur dan menampilkan data dalam tabel AWS DDB dengan grafik matplotlib yang mpld3 berubah menjadi html. numpy tampaknya diperlukan untuk panda, dan setiap kali saya mencoba menginstal perpustakaan ini ke direktori target sehingga mereka dapat berjalan dalam fungsi lambda, menurut https://docs.aws.amazon.com/lambda/latest/dg/lambda -python-how-to-create-deployment-package.html , saya mendapatkan kesalahan berikut:
```PENTING: HARAP BACA INI UNTUK SARAN CARA MEMECAHKAN MASALAH INI!
Gagal mengimpor modul ekstensi numpy multiarray. Paling
kemungkinan Anda mencoba mengimpor build numpy.
Berikut adalah cara untuk melanjutkan:
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.
Kesalahan asli adalah: Tidak ada modul bernama 'numpy.core._multiarray_umath'
ID Permintaan AKHIR: 2fc65f50-420d-441b-930c-665b1c8ab3ea
REPORT RequestId: 2fc65f50-420d-441b-930c-665b1c8ab3ea Duration: 0.85 ms Billed Duration: 100 ms Ukuran Memori: 128 MB Memori Maks yang Digunakan: 40 MB ```
Untuk mengisolasi masalah, saya mencoba lagi di atas dengan:
def main(event, context):
a = 100
print(a)
return
dan
import numpy as np
def main(event, context):
a = np.array(100)
print(a)
return
Kedua file di-zip ke direktori package
yang berisi instalasi numpy yang ditargetkan menurut https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment- paket.html. Setelah zip, file berukuran ~16MB, jadi mereka memiliki instalasi numpy. Contoh pertama yang tidak mengimpor numpy berjalan dengan baik saat menguji fungsi Lambda, tetapi kesalahan kedua dengan pesan kesalahan asli
Panduan AWS itu tidak menceritakan keseluruhan cerita kepada Anda. Distribusi Amazon Linux tidak kompatibel dengan instalasi NumPy biasa seperti dari PyPi atau conda-forge.
Saya sarankan Anda mengikuti salah satu panduan ini atau menggunakan file zip dari salah satu repo ini:
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
Ini bukan bug NumPy, jadi saya akan menutup masalah ini.
Terima kasih,
Saya menghargai tanggapan Anda. FYI Saya bisa membuatnya bekerja dengan memulai instance EC2 dengan AWS Linux OS dan menginstal perpustakaan di sana. Semuanya bekerja dengan baik.
Terima kasih untuk bantuannya,
Lee
Dapatkan Outlook untuk iOS https://aka.ms/o0ukef
Dari: Ralf Gommers [email protected]
Dikirim: Sabtu, 4 Mei 2019 06:52
Kepada: numpy/numpy
Cc: Lee James; Pengarang
Subjek: Re: [numpy/numpy] Tidak dapat mengimpor numpy dalam fungsi AWS Lambda (#13465)
Panduan AWS itu tidak menceritakan keseluruhan cerita kepada Anda. Distribusi Amazon Linux tidak kompatibel dengan instalasi NumPy biasa seperti dari PyPi atau conda-forge.
Saya sarankan Anda mengikuti salah satu panduan ini atau menggunakan file zip dari salah satu repo ini:
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-2Dde488d=2af DowMCaQ&c=0hefKdg9jtsMu47wpF0ovg&r=2qmZ2aA-JTvfrp24tI1PaA&m=o4NpaNDNU2z8VYtFVRO3Z-KgjOittvdP3EKrsYfomhs&s=ZKkVD6L0Edw1
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=PQOBXsoiGwGl3XWjQF
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-KgjOittvdP3EKrsYfomhsyi&s=
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=0hefKdg9jtsMu47wpF0ovm -KgjOittvdP3EKrsYfomhs&s=poqmiFo_VPWUjgf2NEI4vBxzANNWtRm3sXSUypHO88w&e=
Ini bukan bug NumPy, jadi saya akan menutup masalah ini.
—
Anda menerima ini karena Anda yang menulis utas.
Balas email ini secara langsung, melihatnya di 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= , atau mematikan benang 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 Apakah Anda tahu ada taktik terkait python3.7 tentang ini. Saya sudah mencoba beberapa dari daftar 3.6 Anda dan selalu berakhir dengan keluhan yang sama tentang _multiarray lib. Saya perlu membuat "lapisan" AWS karena kombinasi yang saya butuhkan (numpy,scipy,pandas) melebihi tunjangan ukuran dari satu fungsi.
@iceback jika kesalahan Anda mirip dengan yang saya miliki, yaitu No module named 'numpy.core._multiarray_umath'
, ini disebabkan oleh tidak menginstal numpy dengan OS yang benar.
AWS lambda akan menjalankan AWS linux saat runtime, jadi semua paket yang diinstal target harus diinstal dengan OS yang tepat. Jika Anda menargetkan menginstal numpy
ke direktori package
melalui pip install --target ./package numpy
, dan Anda menjalankan OS lain (seperti macOS), maka ini akan gagal karena instalasi target mengasumsikan bahwa OS tidak akan berubah dari OS asli Anda.
Untuk menyiasatinya, Anda memiliki dua opsi:
Saya harus meninjau kembali semua hal yang saya coba minggu lalu termasuk @korniichuk dan github/pbegle dan tuan tahu apa lagi tetapi selalu berakhir di tempat yang sama. Membangun numpy pada EC2 tidak berjalan dengan baik. Mungkin versi Cython yang salah (hanya tersedia 0,27 di aws linux). Bisakah Anda menguraikan # 1 Anda. Bagaimana Anda mendapatkan dari numpy yang diinstal pada satu instance ke lapisan di Lambda?
@iceback Ya ini membuat frustrasi ketika saya pertama kali melakukannya, tapi itu pasti mungkin. Saat ini saya menjalankan fungsi Lambda dengan Python 3.7 dengan 3 paket yang Anda sebutkan.
Bagaimana saya melakukan langkah 1. di atas terlibat mengikuti langkah-langkah yang diuraikan dalam Memperbarui Fungsi dengan Dependensi Tambahan , dijelaskan di sini . Demi kesederhanaan, saya akan berasumsi bahwa file python lokal Anda bernama _pony.py_ dan fungsi lambda_ dipanggil dengan fungsi _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
. File zip Anda sekarang berisi kode lambda Anda bersama dengan modul python yang diperlukan, yang diinstal untuk menargetkan dengan OS Linux AWS.**Pastikan bahwa fungsi lambda Anda menunjuk ke & menjalankan nama file dan fungsi utama Anda, _pony.ride_pony_, jika itu bukan _lambda_function.lambda_handler_ default
Terima kasih banyak. Saya percaya saya punya kesempatan! (Pemahaman saya adalah bahwa bagian atas Zip harus "python" untuk lapisan Lambda jadi saya akan menggunakannya sebagai ganti "paket")
Teriakkan cara itu dengan lantang dan bangga! Tidak yakin di mana saya melanggar saran lain (meskipun itu untuk python3.6) tetapi saya sekarang kembali mengerjakan kode fungsi saya. Terima kasih banyak.
AWS sekarang juga menerbitkan lapisan yang mencakup NumPy dan SciPy. Dari https://aws.amazon.com/blogs/aws/new-for-aws-lambda-use-any-programming-language-and-share-common-components/
_Berdasarkan umpan balik pelanggan kami, dan untuk memberikan contoh cara menggunakan Lapisan Lambda, kami menerbitkan lapisan publik yang mencakup NumPy dan SciPy, dua perpustakaan ilmiah populer untuk Python. Lapisan yang telah dibuat sebelumnya dan dioptimalkan ini dapat membantu Anda memulai dengan sangat cepat dengan pemrosesan data dan aplikasi pembelajaran mesin._
Hm, mungkinkah ada terlalu banyak dokumentasi AWX? ;)
Pada 23 Oktober 2019, pukul 04.29, Ralf Gommers [email protected] menulis:
AWS sekarang juga menerbitkan lapisan yang mencakup NumPy dan SciPy. Dari 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/
Berdasarkan umpan balik pelanggan kami, dan untuk memberikan contoh cara menggunakan Lapisan Lambda, kami menerbitkan lapisan publik yang mencakup NumPy dan SciPy, dua perpustakaan ilmiah populer untuk Python. Lapisan yang telah dibuat sebelumnya dan dioptimalkan ini dapat membantu Anda memulai dengan sangat cepat dengan pemrosesan data dan aplikasi pembelajaran mesin.—
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, melihatnya di GitHub https://github.com/numpy/numpy/issues/13465?email_source=notifications&email_token=AACY7PDHEVUY6IGQ6IXVXPLQQARRNA5CNFSM4HKX25D2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECA5ACQ#issuecomment-545378314 , atau berhenti berlangganan https://github.com/notifications/unsubscribe- auth/AACY7PFK3DUQOBMT5QA2ID3QQARRNANCNFSM4HKX25DQ .
Apa yang berhasil bagi saya adalah menggunakan versi Linux dari perpustakaan numpy (saya menggunakan macOS). Saya pergi ke https://pypi.org/project/numpy/#files dan mengunduh file .whl dalam versi yang saya cari (bagi saya, itu numpy-1.19.0-cp37-cp37m-manylinux1_x86_64.whl) . Selanjutnya masuk ke terminal dan unzip dengan melakukan 'unzip numpy-1.19.0-cp37-cp37m-manylinux1_x86_64.whl'. Ini akan memberi Anda versi numpy yang akan berfungsi di Lambda. Kemudian, zip semuanya seperti yang Anda lakukan sebelumnya dan unggah. Pada akhirnya masalah yang sangat membuat frustrasi diselesaikan dengan cukup sederhana.
Saya memiliki masalah yang sama, solusi yang berhasil untuk saya adalah saya menghapus numpy dari pc saya, (windows 7).
daripada saya menambahkan lapisan dalam fungsi aws lambda sesuatu yang disebut AWSlambda scipy dan hanya itu.
Saya mengalami masalah yang sama dengan Windows tetapi dapat menyelesaikannya dengan salah satu pendekatan berikut:
--use-container
, yang memiliki penjelasan berikut dalam dokumen :Jika fungsi Anda bergantung pada paket yang memiliki dependensi yang dikompilasi secara asli, gunakan flag ini untuk membangun fungsi Anda di dalam wadah Docker seperti AWS Lambda.
Komentar yang paling membantu
Panduan AWS itu tidak menceritakan keseluruhan cerita kepada Anda. Distribusi Amazon Linux tidak kompatibel dengan instalasi NumPy biasa seperti dari PyPi atau conda-forge.
Saya sarankan Anda mengikuti salah satu panduan ini atau menggunakan file zip dari salah satu repo ini:
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
Ini bukan bug NumPy, jadi saya akan menutup masalah ini.