1

私はPython(2.7)プログラムを作成してパッケージ化し、Amazaon WSでラムダ関数を作成しています。私が持っているプログラムは、PySha3 packageに依存しています。PySha3 packageは、基本的に最適化されたSha3 CパッケージのPythonラッパーです。 Pysha3はCファイルをインポートします。これら2つのファイルのソースコードはthis Github Repositoryにあります。Cコンパイラに必要なPythonプログラムのパッケージ化

パッケージをLambdaプラットフォームにインポートするには、ファイル全体とすべての依存関係を圧縮してアップロードする必要があります。私がこれを行い、アップロード後にパッケージをテストしようとすると、PySha3のパッケージに含まれているCファイルからSha3クラスをインポートできないというエラーが出ます。私自身の研究とトラブルシューティングの結果、プログラムのディレクトリのルートにPysha3ホイールをインストールすることに決めました。これは正しい動きだと思います。しかし、私はこれを行うとき、私は下のエラーを取得:

enter image description here

私は本当に私はホイールがCコンパイラをインストールして、正しくインストールするために取得することができますし、何とか一緒にCコンパイラをパッケージ化することができるかどうかということ願っています私のプログラムでは、ラムダがうまくいくでしょう。私はthis compiler for Pythonを見つけました。私はそれをインストールすることでローカルで自分のエラーが修正され、おそらくzipファイルにそれを含めてLambda AWSのエラーを修正することを期待しています。

私の質問は、私の思考プロセスは有効であると思われますか?同様に、実際に利用されるようにコンパイラをzipファイルに含める方法に関するヒントやガイダンスはありますか?私はこれのすべてにとても新しいので、何かが助けになるでしょう。どうもありがとうございました!

答えて

1

ラムダのバイナリをパッケージ化するには、正しい環境にネイティブコードを作成する必要があります。 Windowsマシンでビルドしようとしているようです。たとえビルドが動作しても、生成されたバイナリはラムダ実行環境には適していません。

現在サポートされる環境にも述べLambda Execution Environmentガイド、に記載されています:

あなたのコード内の任意のネイティブバイナリを使用している場合、それらはこの環境でコンパイルされていることを確認してください。

+0

この情報をありがとうございました - 私はここからそれを介して作業しようとします! – Liv

+0

コンパイルしたバイナリをパッケージサイト(https://pypi.python.org/pypi/pysha3)から取り出し、私のWindows PCで7zで解凍し、コンパイルしたバイナリをプロジェクトディレクトリに追加しました。 コンパイル済みのLinuxバイナリを使ってzip形式のプロジェクトディレクトリをアップロードしました!私はpysha3-1.0.2-cp27-cp27m-manylinux1_x86_64.whlを使いました – Meir

関連する問題