Я успешно использую Google or-tools
на инстансах AWS EC2, но недавно рассматривал возможность включения их в AWS Lambda работает, но не может запуститься.
Функция debug.py
Ниже приведена базовая функция, импортирующая pywrapcp
из ortools
, которая должна завершиться успешно, если все настроено правильно.
from ortools.constraint_solver import pywrapcp
def handler(event, context):
print(pywrapcp)
if __name__ == '__main__':
handler(None, None)
Ошибка импорта модуля
Я создал скрипт package.sh
, который копирует все зависимости в проект в соответствии с пакетом Amazon инструкции перед созданием 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
Любые идеи?