【问题标题】:Couldn't find path to unrar library in aws lambda (Python)在 aws lambda (Python) 中找不到 unrar 库的路径
【发布时间】:2022-09-28 10:49:49
【问题描述】:

我有一个 rar 文件,我想使用 python 在 AWS lambda 中解压缩。我在 python 中了解了unrar 库。我在 AWS 中为unrar 创建了层。但是现在当我执行代码时

from unrar import rarfile
rar = rarfile.RarFile(\'file.rar\')
rar.extractall()

我收到以下错误

Couldn\'t find path to unrar library.

我读了solution。根据解决方案,我必须设置环境变量。我也可以将此解决方案用于 AWS Lambda 吗?以及其他可能的解决方案。

  • 您是如何将 unrar(以及您需要手动编译的 unrar 本机库)安装到 AWS Lambda 环境中的……?
  • 使用此命令docker run -v \"$PWD\":/var/task \"lambci/lambda:build-python3.7\" /bin/sh -c \"pip install unrar -t python/lib/python3.7/site-packages/; exit\" 然后我将其压缩并上传到图层
  • 所以你根本没有安装原生库?这可能是它不存在的原因。
  • 好的!那么如何在 lambda 中安装本机 unrar 库?
  • 库安装说明在 unrar PyPI 页面上。现在,您只需想出一个与 Lambda 兼容的 ABI 构建环境。祝你好运!

标签: python aws-lambda unrar


【解决方案1】:

首先,我遵循了unrar 的文档。我遵循的步骤

  1. 下载source file,解压。 (它会创建一个文件夹说解压)
  2. cd unrar (转到文件夹)
  3. make lib && make install-lib
  4. 它将在 linux 中的/usr/lib 位置创建libunrar.so 文件。

    Python unrar 在 Linux 路径中找不到这个文件,这就是它抛出 Couldn't find path to unrar library. 的原因

    现在,我为这个文件创建了一个 lambda 层。

    1. 创建一个名为并复制/粘贴这个libunrar.so在那个文件夹中。
    2. 创建一个 zip并将其上传到 lambda 层
    3. 将此层附加到您的 lambda

      最后,在 lambda 中设置一个环境变量 UNRAR_LIB_PATHlibunrar.so

【讨论】:

    猜你喜欢
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多