我想在AWS Lambda导入并使用python的数据集包。数据集包是关于MySQL连接和执行查询。但是,当我尝试导入它时,会出现错误。
" libmysqlclient.so.18:无法打开共享对象文件:没有这样的文件或目录"
我认为问题是因为MySQL客户端包是必要的。但是,AWS Lambda的机器中没有MySQL软件包。
如何添加第三方程序以及如何链接?
答案 0 :(得分:0)
您应该将软件包安装在lambda文件夹中:
$ pip install YOUR_MODULE -t YOUR_LAMBDA_FOLDER
然后,压缩整个目录以压缩上传到lambda。
答案 1 :(得分:0)
您需要做的是包含lambda包所需的二进制文件。
你需要利用pip并创建一个孤立的环境。你上传到lambda的zip需要包含python2.7 / site-packages(用pip安装的那些)。
现在存在与os相关的依赖性的极端情况。 这有一个棘手的解决方案。 在这些情况下,您必须生成一个amazon linux ec2实例,以便构建/获取这些依赖项并使用您的lambda打包它们。 打包lambda后,可以关闭ec2实例。 如果virtualenv不够,请查看this指南。
答案 2 :(得分:0)
这是一个os依赖的系统文件。我猜你成功安装了Python mysql客户端,但你仍然需要系统mysql客户端,它似乎是你的系统上的一个不同于lambda的版本。虽然在official lambda image上构建虚拟环境肯定能解决这个问题,但可能有幸将您自己的系统文件副本复制到lambda zip文件中。
我找到了我的
locate libmysqlclient.so.18
注意:根据您的系统,最后的版本号可能会有所不同。使用您收到的错误中的版本。
使用
在我的zip文件的顶层添加该文件cd \path\from\locate\to\libmysqlclient
接着是
zip -u \path\to\lambda\zip\file.zip libmysqlclient.so.18
为我工作。