2015-10-29 14 views
6

Sto tentando di installare numpy in un contenitore finestra mobile basato su Alpine 3.1. Sto utilizzando la seguente Dockerfile:Installazione di numpy su Docker Alpine

FROM alpine:3.1 
RUN apk add --update make cmake gcc g++ gfortran 
RUN apk add --update python py-pip python-dev 
RUN pip install cython 
RUN pip install numpy 

Questo funziona bene fino a quando pip install numpy quando ricevo il seguente errore:

error: Command "gcc -fno-strict-aliasing -Os -fomit-frame-pointer -DNDEBUG -Os -fomit-frame-pointer -fPIC -Inumpy/core/include -Ibuild/src.linux-x86_64-2.7/numpy/core/include/numpy -Inumpy/core/src/private -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/src/npysort -I/usr/include/python2.7 -Ibuild/src.linux-x86_64-2.7/numpy/core/src/private -Ibuild/src.linux-x86_64-2.7/numpy/core/src/private -Ibuild/src.linux-x86_64-2.7/numpy/core/src/private -c build/src.linux-x86_64-2.7/numpy/core/src/npymath/ieee754.c -o build/temp.linux-x86_64-2.7/build/src.linux-x86_64-2.7/numpy/core/src/npymath/ieee754.o" failed with exit status 1 

easy_install-2.7 numpy dà lo stesso errore.

Ci sono dei passaggi di configurazione/installazione che mi mancano?

risposta

14

Se non è necessario installare numpy da pypi, è possibile installarlo dai repository alpini. Il pacchetto è denominato py-numpy ed è nel repository testing, vedere here. Minimal Dockerfile esempio che funziona per me

FROM alpine:3.2 
ADD repositories /etc/apk/repositories 
RUN apk add --update python python-dev gfortran py-pip build-base [email protected] 

Contenuto del file di repositories

http://dl-cdn.alpinelinux.org/alpine/v3.2/main 
@community http://dl-cdn.alpinelinux.org/alpine/edge/community 
+3

Questo è il lavoro, ma purtroppo questo è NumPy per Python 2.7. Abbiamo bisogno di una versione per 3.5 – leonprou

+2

Come aggiornamento, devi passare a '@ community' ovunque anziché' @ testing', ad es. 'py-numpy @ community' e' @community http: // dl-cdn.alpinelinux.org/alpine/edge/community' –

+0

Ho provato tutto in questo post, inclusa l'immagine @ James-Endicott di seguito e l'installazione si interrompe invariabilmente intorno NumPy. Ho anche provato https://github.com/WattyAB/docker.alpine.numerical-python che purtroppo non ha funzionato. Vivrà solo con un'immagine da 650 MB .. – cardamom

2

Ho avuto un po 'di problemi con questo me stesso e, per farla breve, io vi incoraggio a chiedere se ne vale davvero la pena. Numpy è enorme quando inizi ad aggiungere cose in pila come panda, gpus e scipy, quindi il vantaggio di costruirlo su Alpine è limitato, i risparmi sull'uso di Debian, Arch o anche di Ubuntu sono relativamente modesti quando 500 MB del tuo spazio è attivo questa libreria comunque.

Ciò detto, ho gettato insieme un'immagine che lo fa. Avevo bisogno delle dipendenze build-time di musl-dev, linux-headers e g ++. Ho anche finito per dover aggiungere openblas dal bordo per qualcosa più avanti nello stack, quindi è possibile che anche alcune dipendenze siano richieste. Ma io credo semplicemente aggiungendo i tre ex librerie con

apk --no-cache add musl-dev linux-headers g++ 

dovrebbe essere sufficiente per impedire l'errore gcc si stanno ottenendo. È possibile visualizzare l'immagine a https://hub.docker.com/r/o76923/alpine-numpy-stack/

0

Prova questo:

RUN apk --no-cache --update-cache add gcc gfortran python python-dev py-pip build-base wget freetype-dev libpng-dev openblas-dev 
RUN ln -s /usr/include/locale.h /usr/include/xlocale.h 
RUN pip install pandas 
Problemi correlati