python-3.x sklearn与Linux-alpine兼容吗?

xvw2m8pv  于 2023-07-01  发布在  Python
关注(0)|答案(2)|浏览(117)

当我试图构建一个包含sklearn包的基于alpine的docker镜像时,我得到了一个错误。
我已经尝试了几种pip安装的变体,不同的包组合,以及过时的sklearn版本,看看它们是否兼容。我还在-it模式下运行了容器,并尝试从那里手动安装包。当我删除sklearn行时,Dockerfile构建完成,容器运行正常。Sklearn在我构建的Ubuntu:latest Dockerfile中工作,但我试图减少我的足迹,所以我希望让它在alpine上工作。
下面是我的Dockerfile代码:

FROM alpine:latest
RUN apk upgrade --no-cache \
  && apk update \
  && apk add --no-cache \
    musl \
    build-base \
    python3 \
    python3-dev \
    postgresql-dev \
    bash \
    git \
  && pip3 install --no-cache-dir --upgrade pip \
  && pip3 install sklearn \
  && rm -rf /var/cache/* \
  && rm -rf /root/.cache/*

这是我得到的错误:

ERROR: Command "/usr/bin/python3.6 /usr/lib/python3.6/site-packages/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel /tmp/tmpqjsz0004" 
failed with error code 1 in /tmp/pip-install-xlvbli9u/scipy
unguejic

unguejic1#

更新:自2020年起,有一个官方的sklearn alpine包,可以通过以下方式轻松安装:

apk add py3-scikit-learn
https://pkgs.alpinelinux.org/package/edge/community/x86/py3-scikit-learn
我甚至会推荐这种方式,而不是使用pip。有些人(包括我)在尝试scipy和/或sklearn的pip-way时遇到了问题:
Scipy error in python:3.8-alpine3.11 - No lapack/blas resources found

zaqlnxep

zaqlnxep2#

Alpine Linux不支持PEP 513。我发现这样的东西是有效的:

RUN apk add --no-cache gcc g++ gfortran lapack-dev libffi-dev libressl-dev musl-dev && \
    mkdir scipy && cd scipy && \
    wget https://github.com/scipy/scipy/releases/download/v1.3.2/scipy-1.3.2.tar.gz && \
    tar -xvf scipy-1.3.2.tar.gz && \
    cd scipy-1.3.2 && \
    python3 -m pip --no-cache-dir install .

相关问题