、、などのバイナリ依存関係を持つ複数のライブラリを使用するLambda
関数があります。過去に、 でそれらを正常にコンパイルして にデプロイしました。Python
numpy
scipy
Pillow
Amazon Linux
Lambda
ただし、最近、依存関係の山に追加Grequest
しましたが、直接関連していないように見えるエラーがスローされていGrequest
ます。このトピックに関する他の質問は行き止まりに終わったので、リングに私の帽子を置きます.
最初のエラーは、単純なエラーGrequests requires gevent
または類似のエラーでした。これを解決するためpip install gevent --no-binary :all:
に、Amazon Linux
インスタンスで実行してみました。それをコードにバンドルして、Lambda にアップロードしました。これはエラーに影響しませんでした。
src
次に、レポからダウンロードしてgevent
コンパイルしmake
ました (レポの README のコマンドは、記録していないエラーをスローしました)。これによりファイルが生成されegg
、それをファイルに変換してwhl
実行しましpip install gevent.whl -t .
た。
結果のコードを my にバンドルしてlambda.zip
アップロードしました。これにより、新しいエラーが発生しました:
module initialization error: lib/libptf77blas.a.gz: invalid ELF header
libptf77blas.a.gz
lib
my のフォルダー内のファイルですlambda.zip
。このフォルダには、、、 などを組み立てながら AWS Linux で構築したファイル.so
がいくつか含まれています。.a
numpy
scipy
Pillow
私の知る限り、これはnumpy
. 私が理解していない部分は次のとおりです。私の関数が使用されていますnumpy
(おそらくlibptf77blas.a.gz
、grequests
.
したがって、コンパイルに関する何かが他の依存ライブラリgevent
の依存関係を壊したか、それ自体が必要であり、それが見つけたものに混乱していると思います。binary
gevent
libptf77blas.a.gz
私はファイルに依存して実行しましたが、参照されていませldd
ん。しかし、私はコンパイルの初心者なので、それはほとんど決定的ではありません..so
gevent
libptf77blas.a.gz
並列アップロードを有効にしたいのGrequests
ですが、これを修正する方法、または使用する代替ライブラリが不明です (通常は JS を作成するため、Python は第 2 言語です)。