私はPythonベースのAWS Lambda関数を作ろうとしており、モジュールをインポートする必要があります。デプロイメント パッケージの作成 (Python)Amazonで。
ZIP ファイルを作成してアップロードすると、ZIP には次のものが含まれます。
usaddress フォルダーに usaddress 依存関係を配置しましたが、それがその場所に属するものであることは推測しているだけです。
いずれにしても、ファイルを Lambda にアップロードすると、エラーが返されます。
{
"errorMessage": "Unable to import module 'Tester2'"
}
START RequestId: e9c2cafe-3705-11e6-a289-5366a5578765 Version: $LATEST
Unable to import module 'Tester2': No module named future.builtins
END RequestId: e9c2cafe-3705-11e6-a289-5366a5578765
usaddress/pycrfsuite/_pycrfsuite.pyd ファイルがファイルによってインポートされていますusaddress/pycrfsuite __init_
。_pycrfsuite は正しいディレクトリにありますが、なぜ無視されているのかわかりません。
これを動作させるにはどうすればよいですか?
答え1
いろいろ調べた結果、.pyd ファイル (無視されていたファイルのファイル タイプ) はコンパイルされた cython ファイルであり、DOS システムと UNIX システムではコンパイル方法が異なることがわかりました。そこで、EC2 インスタンスを開き、依存ライブラリである usaddress をインストールし、ec2 インスタンスがコンパイルした .so ファイルをコピーしました。
結局それはうまくいきました。つまり、これは実際には互換性のないシステム ファイルの問題でした。