Saltar al contenido

Instalación de numpy en Docker Alpine

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
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *