web-dev-qa-db-ja.com

Docker Alpineにnumpyをインストールする

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は同じエラーを返します。

不足している設定/インストール手順はありますか?

21
TDN169

numpyからpypiをインストールする必要がない場合は、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
25
ziky

私はこれについて少し苦労していますが、簡単に言えば、本当に面倒な価値があるかどうか尋ねることをお勧めします。 Numpyは、pandas、gpus、scipyなどのスタックにアイテムを追加し始めると非常に大きくなるため、Alpineでビルドする利点は限られています。とにかくこのライブラリ。

それが言われたので、私はそれをするイメージを一緒に投げました。ビルド時の依存関係として、musl-dev、linux-headers、およびg ++が必要でした。また、スタックの後半でEdgeからopenblasを追加する必要があるため、そこからの依存関係も必要になる可能性があります。しかし、私はちょうど3つの元のライブラリを追加すると信じています

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

取得しているgccエラーを防ぐのに十分なはずです。 https://hub.docker.com/r/o76923/Alpine-numpy-stack/ で画像を表示できます

25
James Endicott

これを試して:

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
1
Gil Margolin

私のdocker imagesによると、これは約311MBです。

FROM python:3.6-Alpine
RUN apk add g++ 
RUN pip install numpy

(その間python:3.6は単独で約900MBです)

Gccをインストールしないでみましたか?競合する可能性がありますか?わからない。これは最小のnumpyインストールとして私のために働いて、共有したかったです。

0
Multihunter

パッケージがAlpineリポジトリで利用可能になりました:py3-numpy。のように機能していませんでしたが.

実際、py3-numpyはライブラリを/usr/lib/python3.7/site-packagesdirectoryにインストールしますが、デフォルトPythonモジュールパスはそれを使用しません:

$ docker run -it python:3-Alpine sh
/ # apk add --update --no-cache py3-numpy
...
/ # python
>>> import numpy
>>> ... module not found ...
>>> import sys
>>> sys.path
['', '/usr/local/lib/python37.Zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']

$PYTHONPATH環境変数を/usr/liblocatedサイトパッケージに設定することで問題を修正しました。

FROM python:3-Alpine

RUN apk add --update --no-cache py3-numpy
ENV PYTHONPATH=/usr/lib/python3.7/site-packages
0
Faylixe