Я пытаюсь установить поток пакетов Python в virtualenv, который был создан с помощью pipenv, внутри контейнера докера.Сбой из-за ошибки, о которой я ничего не понимаю.
Вот мой Dockerfile:
FROM python:3.6-stretch
WORKDIR /tmp
# Define build args
ARG http_proxy
ARG https_proxy
ARG no_proxy
RUN apt-get update && \
apt-get -y install default-jdk
# Detect JAVA_HOME and export in bashrc.
# This will result in something like this being added to /etc/bash.bashrc
# export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
RUN echo export JAVA_HOME="$(readlink -f /usr/bin/java | sed "s:/jre/bin/java::")" >> /etc/bash.bashrc
# Upgrade pip
RUN pip install --upgrade pip
# Install core python packages
RUN pip install pipenv==2018.5.18
Сборка и запуск:
docker build -t pipenvtest:latest .
docker run -it pipenvtest:latest bash
При подключении к контейнеру:
pipenv --python 2.7
pipenv install --dev airflow
Что приводит к ошибке:
сборка расширения _yaml
создание build / temp.linux-x86_64-2.7 / ext
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-строго-псевдонимы -Wdate-time -D_FORTIFY_SOURCE = 2 -g -fdebug-prefix-map = / build / python2.7-2.7.13 =.-fstack-protector-strong -Wformat -Werror = формат-безопасность -fPIC -I / usr / include / python2.7 -c ext / _yaml.c -o build / temp.linux-x86_64-2.7 / ext / _yaml.o
ext / _yaml.c: 4: 20: фатальная ошибка: Python.h: нет такого файла или каталога
#include "Python.h"
^
компиляция прекращена.
ошибка:Сбой команды 'x86_64-linux-gnu-gcc' со статусом выхода 1
(на самом деле ^ появляется в конце строки, предшествующей ему, но я не знаю, как форматировать цитируемый текст кактакие)
Я признаю, что не имел ни малейшего представления о том, как решить эту проблему, так что надеюсь, что кто-то может дать мне несколько советов.Я надеюсь, что репродукция, которую я включил сюда, сработает для вас.