在Docker Alpin上安装numpy

2024-05-18 06:13:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在基于Alpine 3.1的docker容器中安装numpy。我正在使用以下Dockerfile:

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

当我得到以下错误时,pip install numpy才会运行正常:

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给出了相同的错误。

是否缺少任何配置/安装步骤?


Tags: installpipruncorebuildsrcnumpyinclude
3条回答

这件事我自己也有点麻烦,长话短说,我鼓励你问问这件事是否真的值得。当您开始向堆栈中添加诸如pandas、gpu和scipy之类的东西时,Numpy是巨大的,因此在alpine上构建它的好处是有限的,当这个库中有500MB空间时,使用Debian、Arch甚至Ubuntu所节省的成本相对较小。

话虽如此,我却拼凑出了一个这样的形象。我需要作为构建时依赖项musl dev、linux头文件和g++。我还需要在堆栈的后面为一些东西从edge添加openblas,所以也可能需要一些来自edge的依赖项。但我相信只要加上

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

应该足以防止您得到的gcc错误。您可以在https://hub.docker.com/r/o76923/alpine-numpy-stack/查看图像

试试这个:

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

如果不需要从pypi安装numpy,可以从alpine存储库安装它。包名为py-numpy,位于testing存储库中,请参阅here。对我有用的最小Dockerfile示例

FROM alpine:3.2
ADD repositories /etc/apk/repositories
RUN apk add --update python python-dev gfortran py-pip build-base py-numpy@community

repositories文件的内容

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

相关问题 更多 >