我遇到了同样的问题。
拉斐尔·布劳德(RaphaëlBraud)发布的链接很有帮助,所以它也很有用:https: //nervous.io/python/aws/lambda/2016/02/17/scipy-pandas-
lambda/
使用这两个链接,我能够成功导入lxml和其他必需的软件包。这是我遵循的步骤:
- 使用Amazon Linux AMI启动EC2计算机
运行以下脚本以累积依赖关系:
set -e -o pipefail
sudo yum -y upgrade
sudo yum -y install gcc python-devel libxml2-devel libxslt-develvirtualenv ~/env && cd ~/env && source bin/activate
pip install lxml
for dir in lib64/python2.7/site-packages
lib/python2.7/site-packages
do
if [ -d $dir ] ; then
pushd $dir; zip -r ~/deps.zip .; popd
fi
done
mkdir -p local/lib
cp /usr/lib64/ #list of required .so files
local/lib/
zip -r ~/deps.zip local/lib
handler.py
import osimport subprocesslibdir = os.path.join(os.getcwd(), 'local', 'lib')def handler(event, context): command = 'LD_LIBRARY_PATH={} python worker.py '.format(libdir) output = subprocess.check_output(command, shell=True) print output return
worker.py:
import lxmldef sample_function( input_string = None): return "lxml import successful!"if __name__ == "__main__": result = sample_function() print result
- 将处理程序和工作程序添加到zip文件中。
完成上述步骤后,zip文件的结构如下所示:
deps ├── handler.py├── worker.py ├── local│ └── lib│ ├── libanl.so│ ├── libBrokenLocale.so| ....├── lxml│ ├── builder.py│ ├── builder.pyc| ....├── <other python packages>
- 确保在创建lambda函数时指定了正确的处理程序名称。在上面的示例中,它将是“ handler.handler”
希望这可以帮助!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)