Hay un proyecto de Python en el que tengo dependencias definidas con la ayuda del archivo "requirement.txt". Una de las dependencias es gmpy2. Cuando estoy ejecutando docker build -t myimage . El comando me está dando el siguiente error en el paso cuando se ejecuta 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"Del mismo modo, otros dos errores son:
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>Ahora la pregunta es cómo puedo definir o instalar estas dependencias internas requeridas para una construcción exitosa de la imagen. Según tengo entendido, gmpy2 está escrito en C y depende de otras tres bibliotecas C: GMP, MPFR y MPC y no puede encontrar esto.
El siguiente es mi archivo docker:
FROM python:3 COPY . . RUN pip install -r requirement.txt CMD [ "python", "./mike/main.py" ]Instale esta dependencia adicional apt install libgmp-dev libmpfr-dev libmpc-dev y luego RUN pip install -r requirement.txt require.txt, creo que funcionará y podrá instalar todas las dependencias y crear una imagen acoplable.
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" ]si apt no se ejecuta, puede usar Linux como imagen base.
Deberá modificar su Dockerfile para instalar las bibliotecas C adicionales mediante apt-get install . (La imagen predeterminada de Python 3 se basa en una imagen de Debian).
sudo apt-get install libgmp3-dev sudo apt-get install libmpfr-dev Parece que puedes instalar las dependencias para pyodbc usando
sudo apt-get install unixodbc-dev Sin embargo, no estoy seguro del requisito de Carbon.h , ya que es un archivo de encabezado específico de OS X. Es posible que tenga una dependencia específica de OS X en su archivo de requisitos que no funcionará en una imagen basada en Linux.