airflow - 使用 pipenv 时气流安装失败
问题描述
我正在尝试将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
( ^ 实际上出现在它前面的行的末尾,但我不知道如何格式化引用的文本)
我承认对如何解决这个问题一无所知,所以希望有人能给我一些指示。我希望我在这里包含的复制品对你有用。
解决方案
好吧,我真的很笨。我试图在从 python:3.6-stretch 构建的图像上设置 python2.7 virtualenv。
我变了
pipenv --python 2.7
至
pipenv --python 3.6
它奏效了。
推荐阅读
- postgresql - Postgres:统计过去 1 分钟内执行的所有 INSERT 查询
- ios - 如何将自定义 iOS Crashlytics 异常记录为致命而不是非致命?
- php - 在 PDO 准备好的语句中嵌套 LAST_INSERT_ID()?
- javascript - 为什么我不能将 chrome.storage 数据分配给 vuex 状态?
- r - 将数据框中的点绘制到单独的形状文件上
- node.js - 节点:如何将数据推送到 Json 文件中... data.push 不工作
- flutter - Flutter Provider:如何监听类字段内部的类字段变化?
- html - 当 img 和 div 设置为相同宽度时,为什么 div 会变小?
- javascript - Mongo 查询将 Int/double 转换为带有逗号分隔值并附加 $ 符号的字符串
- python - 使用python从列表中获取最长的字符串