python - 致命错误:*.h:没有这样的文件或目录。在运行 docker build 命令为 python 项目创建映像时
问题描述
有一个 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,但它无法找到它。
以下是我的码头文件:
FROM python:3
COPY . .
RUN pip install -r requirement.txt
CMD [ "python", "./mike/main.py" ]
解决方案
安装这个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" ]
如果 apt 无法运行,您可以使用 Linux 作为基础映像。
推荐阅读
- php - Laravel 购物车
- python - 了解并创建 YAML 配置文件
- excel - 在搜索中找不到目标值时如何结束关闭宏
- intellij-idea - 为 Groovy 脚本(XmlParser 或 XmlSplurper)导入库到 Intellij Idea
- c++ - 为什么 for 循环不增加?
- awk - awk - get least count where key appears minimum time
- node.js - 从 ng start 启用 v8 profiler 的启动节点
- html - 如何为 Chrome 编写 @font-face
- git - 为什么在 git checkout 上它会自动在我的新分支中添加更改的文件
- javascript - 围绕 z 轴旋转对象,取决于一个点