私はGoogle のor-tools
AWS EC2 インスタンスを正常に使用していますが、最近 AWS Lambda 関数に含めることを検討していますが、実行できません。
関数debug.py
以下は、すべてが正しく設定されていれば成功するはずのpywrapcp
fromをインポートする基本的な関数です。ortools
from ortools.constraint_solver import pywrapcp
def handler(event, context):
print(pywrapcp)
if __name__ == '__main__':
handler(None, None)
モジュールのインポートの失敗
zip アーカイブを作成する前に、 Amazon の指示に従ってすべての依存関係をプロジェクトにコピーするpackage.sh
スクリプトを作成しました。デプロイされたコードを実行すると、次のようになります。
Unable to import module 'debug': No module named ortools.constraint_solver
の内容package.sh
#!/bin/bash
DEST_DIR=$(dirname $(realpath -s $0));
echo "Copy all native libraries...";
mkdir -p ./lib && find $directory -type f -name "*.so" | xargs cp -t ./lib;
echo "Create package...";
zip -r dist.zip debug.py lib;
rm -r ./lib;
echo "Add dependencies from $VIRTUAL_ENV to $DEST_DIR/dist.zip";
cd $VIRTUAL_ENV/lib/python2.7/site-packages;
zip -ur $DEST_DIR/dist.zip ./** -x;
ortools
フォルダーをortools-4.4.3842-py2.7-linux-x86_64.egg
プロジェクト ルートに直接コピーすると、それが見つかりortools
ますが、インポートpywrapcp
に失敗します。これは、ネイティブ ライブラリの読み込みの失敗に関連している可能性がありますが、ログに詳細が表示されないため、わかりません。
Unable to import module 'debug': cannot import name pywrapcp
何か案は?