при использовании pipenv установка воздушного потока завершается неудачно - PullRequest
0 голосов
/ 06 октября 2018

Я пытаюсь установить поток пакетов 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

(на самом деле ^ появляется в конце строки, предшествующей ему, но я не знаю, как форматировать цитируемый текст кактакие)

Я признаю, что не имел ни малейшего представления о том, как решить эту проблему, так что надеюсь, что кто-то может дать мне несколько советов.Я надеюсь, что репродукция, которую я включил сюда, сработает для вас.

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

ОК, я был действительно тупым.Я пытался настроить python2.7 virtualenv на образ, построенный из python: 3.6-stretch.

Я изменил

pipenv --python 2.7

на

pipenv --python 3.6

и все заработало.

0 голосов
/ 06 октября 2018

Предназначен ли переключатель --dev в pipenv install --dev airflow?Он также указывает pipenv на установку зависимостей разработки Airflow.Для одной из этих зависимостей требуется заголовочный файл Python.h (который отсутствует).Чтобы решить проблему:

  • Если вам не нужны зависимости для разработки, удалите переключатель --dev.
  • Если вам нужны зависимости для разработки, установите пакет libpython2.7-dev,который предоставляет Pthon.h, перед установкой Aiflow: apt install libpython2.7-dev
...