【问题标题】:Why isn't my zbar library upload to Amazon Lambda? Docker, Zappa为什么我的 zbar 库没有上传到 Amazon Lambda?码头工人,扎帕
【发布时间】:2019-03-30 15:48:02
【问题描述】:

我正在尝试通过 Zappa 将 Django 应用程序部署到 Amazon Lambda。 该应用程序使用 pyzbar,它具有 zbar 或 libzabar0 要求。 在我的 Dockerfile 中,我安装了 zbar 库,并且在本地 docker 文件中我的代码可以正常运行。 但是,当我执行zappa update dev 时,它会提供一个错误,即找不到 zbar 依赖项。 ImportError: Unable to find zbar shared library

我环顾四周,并遵循本指南:https://blog.zappa.io/posts/docker-zappa-and-python3。 我已经在 Dockerfile 中添加了依赖项(见下文),并表示它工作正常。 我也尝试在上面的目录中部署 zappa (/var/),但随后 zappa 抱怨 zip 文件太大。

Dockerfile

FROM lambci/lambda:build-python3.6

LABEL maintainer='me'

WORKDIR /var/task

# Fancy prompt to remind you are in zappashell
RUN echo 'export PS1="\[\e[36m\]zappashell>\[\e[m\] "' >> /root/.bashrc

# Add your extra requirements here e.g. postgres-devel 
# RUN yum install -y yourpackages

RUN yum clean all && \
    yum -y install zbar zbar-devel

CMD ["zappa"]

Zappa 设置

{
    "dev": {
        "django_settings": "library.settings",
        "profile_name": null,
        "project_name": "backend",
        "runtime": "python3.6",
        "s3_bucket": "bucket"
    }
}

Docker 运行命令: docker run -ti --env .env -v "%cd%":/var/task -v ~/.aws/:/root/.aws -p "8000:8000" library bash

我的目标是将它上传到 Amazon Lambda 并让 zbar 库正常工作。 但是,我收到 ImportError:ImportError: Unable to find zbar shared library

知道如何解决这个问题吗?

【问题讨论】:

  • Lambda 没有您的本地源代码树,也不会运行交互式 shell。您可以使 docker run 命令更接近您在 Lambda 中实际运行的命令,这可能意味着将您的本地树 COPYing 到 Docker 映像中。

标签: python docker aws-lambda zbar zappa


【解决方案1】:

您可以从这里使用 python pip 包:https://pypi.org/project/zbar/

将 zbar 添加到您的 requirements.txt。然后会在python virtualenv中安装上传:

在 docker 容器中激活你的 virtualenv:

source /var/task/venv/bin/activate

安装requirements.txt中定义的python库:

pip install -r requirements.txt

【讨论】:

    猜你喜欢
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多