首页 > 解决方案 > 在 Dockerfile 上运行安装 python 包

问题描述

我是 Docker 新手,目前正在尝试通过安装 python 包及其库来创建 Dockerfile,如下所示:

FROM balenalib/fincm3-debian-python:latest

# RUN install_packages git
RUN apt-get update && apt-get install python \
        && apt-get install pip3 \
        apt-get install libportaudio0 libportaudio2 libportaudiocpp0 portaudio19-dev \
        pip3 install pyaudio \
        pip3 install numpy \
        pip3 install matplotlib \
        pip3 install scipy \
        pip3 install librosa \

# Set our working directory
WORKDIR /usr/src/app

COPY Recorder.py /usr/src/app

# Recorder.py will run when container starts up on the device
CMD ["python","/usr/src/app/Recorder.py"]

但是,当我尝试推送此 Dockerfile 时,会生成错误

    Error: The command '/bin/sh -c apt-get update && apt-get install python          && apt-get install pip3         apt-get install libportaudio0 libportaudio2 libportaudiocpp0 portaudio19-dev            pip3 install pyaudio
pip3 install numpy              pip3 install matplotlib                 pip3 install scipy              pip3 install librosa WORKDIR /usr/src/app' returned a non-zero code: 100

标签: pythondockerdockerfilebalena

解决方案


我相信你在这个 Dockerfile 中的问题不止一个,当你把所有命令放在一起时&& and \,你不知道是哪一个触发了错误。我建议将它们拆分用于调试目的,当它们都工作时,您可以将它们放在一起。一旦您了解了每个单独的错误,就更容易检查和解决它们。这个问题有很有价值的信息:how to install pip in docker

尝试这个:

1- 包是触发 Y/n 问题,给 -y 以保证它通过

2-使用反斜杠表示新命令,你应该使用&&,反斜杠是指断行,你可以使用\然后&&

3-pip3libportaudio0包不存在。

E: Unable to locate package libportaudio0

我发现了像这样划分 Dockerfile 并删除提到的问题的错误

RUN apt-get update 
RUN apt-get install python -y\
        && apt-get install python3-pip -y
RUN apt-get install libportaudio2 libportaudiocpp0 portaudio19-dev -y 
RUN pip3 install pyaudio numpy matplotlib \
             scipy librosa

如果要将命令放在一起:

RUN apt-get update \
        && apt-get install python -y \
        && apt-get install python3-pip -y \
        && apt-get install libportaudio2 libportaudiocpp0 portaudio19-dev -y \
        && pip3 install pyaudio numpy matplotlib \
             scipy librosa

我还建议添加一个 pip 要求文件,这会使事情变得更干净。


推荐阅读