严重错误:* .h:没有此类文件或目录。在运行docker build命令为python项目创建图像时

时间:2019-05-21 03:59:26

标签: python docker kubernetes dockerfile

有一个python项目,其中借助“ requirement.txt”文件定义了依赖项。依赖项之一是gmpy2。当我运行docker build -t myimage .命令时,在执行setup.py install的步骤中,出现以下错误。

In file included from src/gmpy2.c:426:0:
src/gmpy.h:252:20: fatal error: mpfr.h: No such file or directory
include "mpfr.h"

类似的其他两个错误是:

In file included from appscript_3x/ext/ae.c:14:0:
appscript_3x/ext/ae.h:26:27: fatal error: Carbon/Carbon.h: No such file    
or directory
#include <Carbon/Carbon.h>

In file included from src/buffer.cpp:12:0:
src/pyodbc.h:56:17: fatal error: sql.h: No such file or directory
#include <sql.h>

现在的问题是我如何定义或安装成功构建映像所需的这些内部依赖项。根据我的理解,gmpy2是用C编写的,并且依赖于其他三个C库:GMP,MPFR和MPC,无法找到它。

以下是我的docker文件:

FROM python:3

COPY . .

RUN pip install -r requirement.txt

CMD [ "python", "./mike/main.py" ]

2 个答案:

答案 0 :(得分:2)

安装此apt install libgmp-dev libmpfr-dev libmpc-dev额外的依赖项,然后安装RUN pip install -r requirement.txt 我认为它将起作用,您将能够安装所有依赖项并构建docker映像。

FROM python:3

COPY . .

RUN apt-get update -qq && \
apt-get install -y --no-install-recommends \
libmpc-dev \
libgmp-dev \
libmpfr-dev

RUN pip install -r requirement.txt

CMD [ "python", "./mike/main.py" ]

如果无法运行,则可以使用Linux作为基本映像。

答案 1 :(得分:1)

您将需要修改Dockerfile以使用apt-get install安装其他C库。 (默认的Python 3图像基于Debian图像)。

sudo apt-get install libgmp3-dev
sudo apt-get install libmpfr-dev

使用

looks like you can install pyodbc的依赖项
sudo apt-get install unixodbc-dev

但是,我不确定Carbon.h的要求,因为这是OS X特定的头文件。您的需求文件中可能具有特定于OS X的依赖关系,而该依赖关系不适用于基于Linux的映像。