Запустите установочные python пакеты в Dockerfile - PullRequest
0 голосов
/ 29 апреля 2020

Я новичок в Docker и в настоящее время пытаюсь создать Dockerfile с установкой пакетов python и его библиотек, как показано здесь:

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"]

Однако, пока я пытаюсь попробовать sh этот 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

Ответы [ 3 ]

0 голосов
/ 29 апреля 2020

Пакет, который вы ищете, называется python3-pip.

Далее вам понадобятся и && (для разделения команд), и \ (для продолжения командной строки). Итак, в итоге, это должно быть:

FROM balenalib/fincm3-debian-python:latest

RUN apt-get update && apt-get install python && \
        apt-get install -y \
              python3-pip libportaudio0 libportaudio2 libportaudiocpp0 \
              portaudio19-dev && \
        pip3 install pyaudio numpy matplotlib \
             scipy 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"]
0 голосов
/ 29 апреля 2020

Я полагаю, что у вас более одной проблемы в этом Dockerfile, и когда вы объединяете все команды вместе с && and \, вы не знаете, какая из них вызывает ошибку. Я предлагаю разделить их для целей отладки, когда все они работают, вы можете собрать их вместе. Как только вы поймете каждую отдельную ошибку, ее легче будет проверить и устранить. Этот вопрос содержит ценную информацию: как установить pip в docker

Попробуйте:

1 - пакеты являются триггерами Да / Нет, дайте -y, чтобы гарантировать он передает

2 - используя обратную косую черту для ссылки на новую команду, вы должны использовать &&, обратная косая черта ссылается на разрывную строку, вы можете использовать \, а затем &&

3- pip3 и libportaudio0 пакетов не существует.

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

Я также предлагаю добавить файл требований к пунктам, это сделает вещи чище.

0 голосов
/ 29 апреля 2020

Перемещение python пакетов в файл require.txt и установка python3 -pip с python: 3 базовых образа.

# RUN install_packages git
  RUN apt-get update \
   && apt-get install -y python \
   && apt-get install -y python3-pip

  RUN pip install -r requirements.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...