【发布时间】:2016-10-14 18:10:45
【问题描述】:
我已在 AWS EC2 实例上成功使用 Google's or-tools,但最近一直在考虑将它们包含在 AWS Lambda 函数中,但无法使其运行。
函数debug.py
以下只是从ortools 导入pywrapcp 的基本功能,如果一切设置正确,应该会成功。
from ortools.constraint_solver import pywrapcp
def handler(event, context):
print(pywrapcp)
if __name__ == '__main__':
handler(None, None)
模块导入失败
我创建了一个package.sh 脚本,该脚本将所有依赖项复制到Amazon 的instructions 之后的项目中,然后再创建一个zip 存档。运行部署的代码会导致:
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
有什么想法吗?
【问题讨论】:
标签: amazon-web-services aws-lambda or-tools