TDN*_*169 24 python numpy pip docker alpine-linux
我正在尝试在基于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
Run Code Online (Sandbox Code Playgroud)
这运行正常,直到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
Run Code Online (Sandbox Code Playgroud)
easy_install-2.7 numpy 给出了同样的错误.
我缺少任何配置/安装步骤吗?
小智 27
我自己一直遇到一些麻烦,长话短说,我会鼓励你问这是否真的值得麻烦.当你开始在堆栈中添加像pandas,gpus和scipy这样的东西时Numpy是巨大的,所以在高山上构建它的好处是有限的,当你的500GB空间开启时,使用Debian,Arch甚至Ubuntu的节省相对适中无论如何这个图书馆.
话虽如此,我把一张图片拼凑起来.我需要构建时依赖项musl-dev,linux-headers和g ++.我还需要从堆栈中添加openblas以便稍后在堆栈中添加某些内容,因此可能还需要一些依赖项.但我相信只需添加三个以前的库
apk --no-cache add musl-dev linux-headers g++
Run Code Online (Sandbox Code Playgroud)
应该足以防止你得到的gcc错误.您可以在https://hub.docker.com/r/o76923/alpine-numpy-stack/查看图像
小智 25
如果你没有必要需要安装numpy的pypi,你可以从高山仓库安装它.包已命名py-numpy并位于testing存储库中,请参见此处.最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
Run Code Online (Sandbox Code Playgroud)
repositories文件内容
http://dl-cdn.alpinelinux.org/alpine/v3.2/main
@community http://dl-cdn.alpinelinux.org/alpine/edge/community
Run Code Online (Sandbox Code Playgroud)
Mul*_*ter 14
根据我的数据,这个大约是 311MB docker images:
FROM python:3.6-alpine
RUN apk add g++
RUN pip install numpy
Run Code Online (Sandbox Code Playgroud)
(同时python:3.6本身约为 900MB)
您是否尝试过不安装 gcc?可能有冲突吧?没有把握。这对我来说是一个最小的 numpy 安装并想分享。
小智 13
现在在 Alpine 存储库中提供了一个包:py3-numpy. 但是您将无法立即使用它。
py3-numpy将库安装到/usr/lib/python3.8/site-packages目录中,但默认的 Python 模块路径不使用它:
$ 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']
Run Code Online (Sandbox Code Playgroud)
这可以通过将$PYTHONPATH环境变量设置为site-packagesin的路径来解决/usr/lib:
FROM python:3.8-alpine
RUN apk add --update --no-cache py3-numpy
ENV PYTHONPATH=/usr/lib/python3.8/site-packages
Run Code Online (Sandbox Code Playgroud)
Alpine 使用 musl 构建,与 python 轮子不兼容。这意味着所有依赖项要么应该通过 apk 安装,要么应该手动编译。为了获得更流畅的 python pypi 依赖项体验,使用 debian 看起来更理想,裁剪到最小大小 (python:slim) 作为起点:
FROM python:slim
CMD pip install numpy
Run Code Online (Sandbox Code Playgroud)
123MB
这种方法比接受的答案简单得多,并且生成的图像比其他答案更紧凑。
| 归档时间: |
|
| 查看次数: |
29687 次 |
| 最近记录: |