我正在尝试制作基于 Python 的 AWS Lambda 函数,需要导入一个模块。我按照创建部署包 (Python)在亚马逊上。
当我创建并上传 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 文件。
最终成功了,所以这实际上是系统文件不兼容的问题。