【问题标题】:airflow install fails when using pipenv使用 pipenv 时气流安装失败
【发布时间】:2019-03-11 10:06:24
【问题描述】:

我正在尝试将 python 包气流安装到使用 pipenv 创建的 virtualenv 中,在 docker 容器内。它失败并出现我一无所知的错误。

这是我的 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-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix-map=/build/python2 .7-2.7.13=。 -fstack-protector-strong -Wformat -Werror=format-security -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

(^实际上出现在它前面的行的末尾,但我不知道如何格式化引用的文本)

我承认我对如何解决这个问题一无所知,所以希望有人能给我一些指点。我希望我在这里包含的重现对你有用。

【问题讨论】:

    标签: airflow pipenv


    【解决方案1】:

    好吧,我真的很笨。我试图在从 python:3.6-stretch 构建的图像上设置 python2.7 virtualenv。

    我变了

    pipenv --python 2.7

    到

    pipenv --python 3.6

    它成功了。

    【讨论】:

      【解决方案2】:

      pipenv install --dev airflow 中的 --dev 开关是有意的吗?它指示pipenv 也安装 Airflow 的开发依赖项。这些依赖项之一需要Python.h 头文件(缺少)。解决问题:

      • 如果您不需要开发依赖项,那么 移除--dev 开关。
      • 如果您需要开发 依赖项然后安装libpython2.7-dev 包,它 提供Pthon.h,安装Aiflow前:apt install libpython2.7-dev

      【讨论】:

      • 感谢@sergiykolesnikov 的回复。您的回复对我非常有用,但问题实际上是我自己愚蠢的原因。看我的回答。
      猜你喜欢
      • 2018-08-09
      • 2019-03-15
      • 2019-03-30
      • 2018-12-17
      • 1970-01-01
      • 1970-01-01
      • 2022-12-29
      • 2022-01-09
      • 1970-01-01
      相关资源
      最近更新 更多