Solución:
Si no es necesario, necesita instalar numpy
de pypi
, puede instalarlo desde repositorios alpinos. El paquete se llama py-numpy
y esta en testing
repositorio, ver aquí. Mínimo Dockerfile
ejemplo que funciona para mi
FROM alpine:3.2
ADD repositories /etc/apk/repositories
RUN apk add --update python python-dev gfortran py-pip build-base [email protected]
Contenido de repositories
expediente
http://dl-cdn.alpinelinux.org/alpine/v3.2/main
@community http://dl-cdn.alpinelinux.org/alpine/edge/community
Yo mismo he tenido algunos problemas con esto y, en pocas palabras, te animo a que preguntes si realmente vale la pena. Numpy es enorme cuando comienzas a agregar cosas a la pila como pandas, gpus y scipy, por lo que el beneficio de construirlo en alpine es limitado, los ahorros sobre el uso de Debian, Arch o incluso Ubuntu son relativamente modestos cuando 500 MB de tu espacio están en esta biblioteca de todos modos.
Habiendo dicho eso, armé una imagen que lo hace. Necesitaba como dependencias de tiempo de compilación musl-dev, linux-headers y g ++. También terminé necesitando agregar openblas desde el borde para algo más adelante en la pila, por lo que es posible que también se requieran algunas dependencias de eso. Pero creo que simplemente agregando las tres bibliotecas anteriores con
apk --no-cache add musl-dev linux-headers g++
debería ser suficiente para evitar el error gcc que está recibiendo. Puede ver la imagen en https://hub.docker.com/r/o76923/alpine-numpy-stack/
Ahora hay un paquete disponible en el repositorio de Alpine: py3-numpy
. Pero no podrás usarlo de inmediato.
py3-numpy
instala bibliotecas en /usr/lib/python3.8/site-packages
directorio, pero la ruta predeterminada del módulo de Python no lo usa:
$ docker run -it python:3.8-alpine sh
/ # apk add --update --no-cache py3-numpy
/ # python
>>> import numpy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'numpy'
>>> import sys
>>> sys.path
['', '/usr/local/lib/python38.zip', '/usr/local/lib/python3.8', '/usr/local/lib/python3.8/lib-dynload', '/usr/local/lib/python3.8/site-packages']
Esto se puede arreglar configurando el $PYTHONPATH
variable de entorno a la ruta del site-packages
en /usr/lib
:
FROM python:3.8-alpine
RUN apk add --update --no-cache py3-numpy
ENV PYTHONPATH=/usr/lib/python3.8/site-packages