无法在 Raspberry Pi 上从 Dockerfile 安装 dlib

Posted

技术标签:

【中文标题】无法在 Raspberry Pi 上从 Dockerfile 安装 dlib【英文标题】:Unable to install dlib from Dockerfile on Raspberry Pi 【发布时间】:2020-01-04 23:38:40 【问题描述】:

我正在尝试在 Raspberry Pi 4 上的 Dockerfile 中安装 dlib。

在 Docker 之外,我可以通过运行在 Pi 上安装 dlib

pip3 install --upgrade dlib

但是当我尝试在 Dockerfile 中执行如下操作时:

FROM resin/raspberry-pi-python:3
COPY raspi.list /etc/apt/sources.list.d/raspi.list
COPY sources.list /etc/apt/sources.list
COPY pip.conf /root/.pip/pip.conf 
RUN apt-get -y update
RUN apt-get install -y --fix-missing \
    build-essential \
    cmake \
    libopenblas-dev \
    liblapack-dev \
    libatlas-base-dev \
    libx11-dev \
    libgtk-3-dev \
    gfortran \
    git \
    wget \
    curl \
    graphicsmagick \
    libgraphicsmagick1-dev \
    libatlas-dev \
    libavcodec-dev \
    libavformat-dev \
    libboost-all-dev \
    libgtk2.0-dev \
    libjpeg-dev \
    liblapack-dev \
    libswscale-dev \
    pkg-config \
    python3-dev \
    zip \
    && apt-get clean && rm -rf /tmp/* /var/tmp/*
RUN python3 -m ensurepip --upgrade

RUN pip3 install --upgrade dlib

我在尝试构建 docker 映像时遇到错误:

步骤 9/12 : RUN pip3 install --upgrade dlib ---> 运行 bf5fa67b254d 查看索引: http://mirrors.aliyun.com/pypi/simple/收集dlib下载 http://mirrors.aliyun.com/pypi/packages/05/57/e8a8caa3c89a27f80bc78da39c423e2553f482a3705adc619176a3a24b36/dlib-19.17.0.tar.gz (3.4MB) 安装收集的包:dlib 运行 setup.py install 对于 dlib:开始 为 dlib 运行 setup.py install:完成状态为“错误” 命令的完整输出 /usr/local/bin/python3.6 -u -c "import setuptools, tokenize;file='/tmp/pip-install-sak074zk/dlib/setup.py';f=getattr(tokenize, 'open', open)(file) ;code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" 安装 --record /tmp/pip-record-7yn41l3u/install-record.txt --single-version-externally-managed --compile: 运行安装 运行构建 运行 build_py 找不到包初始化文件“dlib/init.py”(或不是常规文件) 运行 build_ext 回溯(最近一次通话最后): 文件“”,第 1 行,在 文件“/tmp/pip-install-sak074zk/dlib/setup.py”,第 261 行,在 '主题 :: 软件开发', 文件“/usr/local/lib/python3.6/site-packages/setuptools/init.py”,行 129,在设置中 返回 distutils.core.setup(**attrs) 文件“/usr/local/lib/python3.6/distutils/core.py”,第 148 行,在设置中 dist.run_commands() 文件“/usr/local/lib/python3.6/distutils/dist.py”,第 955 行,在 run_commands self.run_command(cmd) 文件“/usr/local/lib/python3.6/distutils/dist.py”,第 974 行,在 run_command cmd_obj.run() 文件“/usr/local/lib/python3.6/site-packages/setuptools/command/install.py”, 第 61 行,运行中 返回 orig.install.run(self) 运行中的文件“/usr/local/lib/python3.6/distutils/command/install.py”,第 545 行 self.run_command('build') 文件“/usr/local/lib/python3.6/distutils/cmd.py”,第 313 行,在 run_command self.distribution.run_command(command) 文件“/usr/local/lib/python3.6/distutils/dist.py”,第 974 行,在 run_command cmd_obj.run() 运行中的文件“/usr/local/lib/python3.6/distutils/command/build.py”,第 135 行 self.run_command(cmd_name) 文件“/usr/local/lib/python3.6/distutils/cmd.py”,第 313 行,在 run_command self.distribution.run_command(command) 文件“/usr/local/lib/python3.6/distutils/dist.py”,第 974 行,在 run_command cmd_obj.run() 运行中的文件“/tmp/pip-install-sak074zk/dlib/setup.py”,第 129 行 cmake_version = self.get_cmake_version() 文件“/tmp/pip-install-sak074zk/dlib/setup.py”,第 120 行,在 get_cmake_version out = subprocess.check_output(['cmake', '--version']) 文件“/usr/local/lib/python3.6/subprocess.py”,第 336 行,在 check_output **kwargs).stdout 运行中的文件“/usr/local/lib/python3.6/subprocess.py”,第 418 行 输出=标准输出,标准错误=标准错误) subprocess.CalledProcessError: Command '['cmake', '--version']' 死于 .


命令“/usr/local/bin/python3.6 -u -c”导入设置工具, tokenize;file='/tmp/pip-install-sak074zk/dlib/setup.py';f=getattr(tokenize, 'open', open)(file) ;code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" 安装 --record /tmp/pip-record-7yn41l3u/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-install-sak074zk/dlib/ 您正在使用点子版本 10.0.1, 但是版本 19.2.3 可用。您应该考虑通过升级 'pip install --upgrade pip' 命令。命令'/bin/sh -c pip3 install --upgrade dlib' 返回一个非零代码:1

我错过了什么?

【问题讨论】:

【参考方案1】:

我能够通过将基础图像更改为 FROM raspbian/stretch

# get base image
FROM raspbian/stretch

RUN apt-get -y update
RUN apt-get install -y --fix-missing \
    build-essential \
    cmake \
    libopenblas-dev \
    libblas-dev \
    liblapack-dev \
    libatlas-base-dev \
    libx11-dev \
    libgtk-3-dev \
    gfortran \
    git \
    wget \
    curl \
    graphicsmagick \
    libgraphicsmagick1-dev \
    libavcodec-dev \
    libavformat-dev \
    libboost-all-dev \
    libgtk2.0-dev \
    libjpeg-dev \
    liblapack-dev \
    libswscale-dev \
    pkg-config \
    python3-dev \
    python3-numpy \
    python3-pip \
    software-properties-common \
    zip \
    && apt-get clean && rm -rf /tmp/* /var/tmp/*

RUN pip3 install setuptools --upgrade
RUN pip3 install cython --upgrade


#Install dlib
RUN cd ~ && \
    mkdir -p dlib && \
    git clone -b 'v19.9' --single-branch https://github.com/davisking/dlib.git dlib/ && \
    cd  dlib/ && \
    python3 setup.py install --yes

【讨论】:

以上是关于无法在 Raspberry Pi 上从 Dockerfile 安装 dlib的主要内容,如果未能解决你的问题,请参考以下文章

在我的 Raspberry Pi 上从 Gitlab.com 克隆 Repo 时权限被拒绝(公钥)

无法在 Manjaro 的 Raspberry PI 中 ssh

无法使用 Raspberry PI 从 RDM6300 读取 RFID 数据

MediaPlayer无法在Android Things Raspberry Pi 3上运行

Opencv:无法打开显示:C++、Raspberry Pi 无头连接

似乎无法让蓝牙代理在 Raspberry Pi 中工作