brew install python
を削除してpython3.7.3をインストールしましたpip install numpy --target .
したがって、コードをローカルで実行でき、問題はありません。 私はpandas、matplotlib、boto3、およびmpld3であり、mpld3がhtmlに変換するmatplotlibグラフを使用してAWSDDBテーブルのデータを整理および表示します。 https://docs.aws.amazon.com/lambda/latest/dg/lambdaによると、パンダにはnumpyが必要なようです。これらのライブラリをターゲットディレクトリにインストールして、ラムダ関数で実行できるようにしようとすると、
「重要:この問題を解決する方法についてのアドバイスは、こちらをお読みください。
マルチアレイ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
レポートRequestId:2fc65f50-420d-441b-930c-665b1c8ab3ea期間:0.85ミリ秒請求期間:100ミリ秒メモリサイズ:128 MB最大使用メモリ:40 MB `` `
問題を特定するために、上記を次のように再試行しました。
def main(event, context):
a = 100
print(a)
return
と
import numpy as np
def main(event, context):
a = np.array(100)
print(a)
return
https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-に従って、両方のファイルがnumpyのターゲットインストールを含むpackage
ディレクトリに圧縮されましたpackage.html。 zipした後、ファイルは最大16MBだったので、インストールが不安定になりました。 numpyをインポートしなかった最初の例は、Lambda関数をテストするときに正常に実行されますが、元のエラーメッセージを含む2番目のエラー
そのAWSガイドはあなたに全体の話をしているわけではありません。 Amazon Linuxディストリビューションは、PyPiやconda-forgeなどの通常のNumPyインストールと互換性がありません。
これらのガイドのいずれかに従うか、次のいずれかのリポジトリの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-lambda-py3.6-pandas-numpy
https://github.com/vitolimandibhrata/aws-lambda-numpy
これはNumPyのバグではないので、問題を解決します。
ありがとう、
ご返信ありがとうございます。 参考までに、AWS Linux OSでEC2インスタンスを開始し、そこにライブラリをインストールすることで、それを機能させることができました。 すべてがうまくいきました。
助けてくれてありがとう、
リー
iOS用のOutlookを入手するhttps://aka.ms/o0ukef
差出人:Ralf [email protected]
送信日:2019年5月4日土曜日6:52 AM
宛先:numpy / numpy
Cc:リージェームス; 著者
件名:Re:[numpy / numpy] AWS Lambda関数にnumpyをインポートできません(#13465)
そのAWSガイドはあなたに全体の話をしているわけではありません。 Amazon Linuxディストリビューションは、PyPiやconda-forgeなどの通常のNumPyインストールと互換性がありません。
これらのガイドのいずれかに従うか、次のいずれかのリポジトリの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 = ZKkVD6L0iXq
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 = PQOBXsoiGwGl3XWjQFq
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 = 708JP
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=2 -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のリストからいくつか試してみましたが、常に_multiarraylibについて同じ不満を抱いています。 必要な組み合わせ(numpy、scipy、pandas)が単一の関数の許容サイズを超えているため、AWSの「レイヤー」を作成する必要があります。
@icebackエラーが私が持っていたもの( No module named 'numpy.core._multiarray_umath'
)と類似している場合、これは正しいOSでnumpyをインストールしていないことが原因です。
AWSlambdaは実行時にAWSlinuxを実行するため、ターゲットにインストールされたパッケージはすべて適切なOSでインストールする必要があります。 numpy
をpip install --target ./package numpy
経由で$ package
ディレクトリにターゲットインストールし、別のOS(macOSなど)を実行している場合、ターゲットインストールはOSはネイティブOSから変更されません。
これを回避するには、2つのオプションがあります。
@korniichukとgithub / pbegleを含め、先週試したすべてのことを再検討する必要があります。主は他に何を知っていますが、常に同じ場所に行き着きました。 EC2でnumpyを構築することはうまくいっていません。 おそらく間違ったCythonバージョン(aws linuxで利用できるのは0.27のみ)。 #1について詳しく教えてください。 1つのインスタンスにインストールされているnumpyからLambdaのレイヤーにどのように移行しますか?
@iceback Yaこれは私が最初にやったときはイライラしましたが、それは間違いなく可能です。 私は現在、あなたが言及した3つのパッケージを使用してPython3.7でLambda関数を実行しています。
上記の手順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ファイルにラムダコードと、AWS LinuxOSをターゲットとするためにインストールされた必要なPythonモジュールが含まれます。**デフォルトの_lambda_function.lambda_handler_でない場合は、ラムダ関数がファイル名とメイン関数_pony.ride_pony_を指していることを確認してください。
どうもありがとうございました。 私はショットを持っていると信じています! (私の理解では、Lambdaレイヤーのzipの上部は「python」である必要があるため、「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レイヤーの使用方法の例を提供するために、Pythonで人気のある2つの科学ライブラリであるNumPyとSciPyを含むパブリックレイヤーを公開しています。 この事前に構築され最適化されたレイヤーは、データ処理および機械学習アプリケーションを非常に迅速に開始するのに役立ちます。_
うーん、AWXのドキュメントが多すぎる可能性はありますか? ;)
2019年10月23日午前4時29分、RalfGommersの[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の使用例を提供するために、Pythonで人気のある2つの科学ライブラリであるNumPyとSciPyを含むパブリックレイヤーを公開しています。 この事前に構築され最適化されたレイヤーは、データ処理および機械学習アプリケーションを非常に迅速に開始するのに役立ちます。—
あなたが言及されたので、あなたはこれを受け取っています。
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でした)。 。 次に、ターミナルに移動し、「unzipnumpy-1.19.0-cp37-cp37m-manylinux1_x86_64.whl」を実行して解凍します。 これにより、Lambdaで動作するnumpyバージョンが得られるはずです。 次に、以前と同じようにすべてを圧縮してアップロードします。 結局、信じられないほど苛立たしい問題はかなり簡単に解決されました。
私は同じ問題を抱えていました、私のために働いた解決策は私が私のPCからnumpyをアンインストールしたことです(Windows7)。
私がawslambda関数にレイヤーを追加したよりもAWSlambdascipyと呼ばれるものでそれだけです。
Windowsで同じ問題が発生しましたが、次のいずれかの方法で解決できました。
--use-container
フラグを使用してAWS SAMでLambdaをビルドします。これには、ドキュメントに次の説明があります。関数がネイティブにコンパイルされた依存関係を持つパッケージに依存している場合は、このフラグを使用して、AWSLambdaのようなDockerコンテナー内に関数をビルドします。
最も参考になるコメント
そのAWSガイドはあなたに全体の話をしているわけではありません。 Amazon Linuxディストリビューションは、PyPiやconda-forgeなどの通常のNumPyインストールと互換性がありません。
これらのガイドのいずれかに従うか、次のいずれかのリポジトリの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-lambda-py3.6-pandas-numpy
https://github.com/vitolimandibhrata/aws-lambda-numpy
これはNumPyのバグではないので、問題を解決します。