Numpy 在Docker Alpine上安装seaborn
我正在尝试使用此Dockerfile安装Numpy 在Docker Alpine上安装seaborn,numpy,docker,seaborn,alpine,Numpy,Docker,Seaborn,Alpine,我正在尝试使用此Dockerfile安装seaborn: FROM alpine:latest RUN apk add --update python py-pip python-dev RUN pip install seaborn CMD python 我得到的错误与numpy和scipy(seaborn要求)有关。首先是: /tmp/easy_install-nvj61E/numpy-1.11.1/setup.py:327:UserWarning: 无法识别的setuptools
seaborn
:
FROM alpine:latest
RUN apk add --update python py-pip python-dev
RUN pip install seaborn
CMD python
我得到的错误与numpy
和scipy
(seaborn要求)有关。首先是:
/tmp/easy_install-nvj61E/numpy-1.11.1/setup.py:327:UserWarning:
无法识别的setuptools命令,继续生成Cython
源和扩展模板
以
文件“numpy/core/setup.py”,第654行,在get_mathlib_info中
运行时错误:断开的工具链:无法链接简单的C程序
命令“python setup.py egg_info”失败,错误代码为1,位于/tmp/pip-build-DZ4cXr/scipy中/
命令'/bin/sh-c pip install seaborn'返回一个非零代码:1
你知道我如何解决这个问题吗?要解决这个错误,你需要安装
gcc
:apk add gcc
但您将看到,由于numpy、matplotlip和scipy有几个依赖项,因此您将遇到一个新错误。您还需要安装gfortran
,musl-dev
,freetype-dev
,等等
这是一个Dockerfile,基于您最初的Dockerfile,它将安装这些依赖项以及seaborn
:
FROM alpine:latest
# install dependencies
# the lapack package is only in the community repository
RUN echo "http://dl-4.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories
RUN apk --update add --no-cache \
lapack-dev \
gcc \
freetype-dev
RUN apk add python py-pip python-dev
# Install dependencies
RUN apk add --no-cache --virtual .build-deps \
gfortran \
musl-dev \
g++
RUN ln -s /usr/include/locale.h /usr/include/xlocale.h
RUN pip install seaborn
# removing dependencies
RUN apk del .build-deps
CMD python
您会注意到,我正在使用apk del.build deps
删除依赖项,以限制映像的大小()
就个人而言,我还必须安装ca证书,但似乎你没有这个问题
注意:您还可以从
python:2.7-alpine
映像构建映像,以避免自己安装python和pip 太棒了,成功了。建造这个容器花了很长时间,但最终还是完成了(重量为693.3MB)。谢谢你的回答(解决了我的问题,还教了我一些关于Docker最佳实践的知识)。@emh不客气。我还必须构建包含scipy的图像,我确认从头开始构建它们需要很长时间。保持它们的小尺寸也是很困难的。至少它们比基于Ubuntu的图像要小!我在测试库ATM中找不到lapack dev
(使用python:alpine
docker图像别名,用于python:3.6-alpine
),因此我需要使用来获取lapack dev
package@shadi你说得对,软件包已移动到社区存储库,我将更新答案最近numpy
被更新,编译失败。如前所述,您可以执行pip install numpy==1.14.3
,但请注意,如果您也开始安装pandas
,它将再次尝试使用最新版本的numpy
。