python-3.x - sklearn 与 Linux-alpine 兼容吗?
问题描述
当我尝试构建包含 sklearn 包的基于 alpine 的 docker 映像时出现错误。
我尝试了一些 pip 安装的变体、不同的包组合以及 sklearn 的过时版本,以查看它们是否兼容。我还在 -it 模式下运行了容器,并尝试从那里手动安装包。当我删除 sklearn 行时,Dockerfile 构建并且容器运行良好。Sklearn 在 Ubuntu:我构建的最新 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
解决方案
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 .
推荐阅读
- postgresql - 是否可以/如何在 GCP postgresql 中创建运算符类?
- android - 在 Android 的 onClickListener 中多次观察到 LiveData
- rest - 包含外键 OnToMany 映射的 POST REST 请求
- excel - VBA:循环文件系统并查找最新文件
- javascript - 在哪里调用 AsyncStorage.getItem() 函数以在 react-native 中加载保存的数据?
- apache-spark - 如何在火花中直接流(kafka)JSON文件并将其转换为RDD?
- android - 邮箱验证后登录时如何判断用户是否为新用户
- javascript - 根据从最早到最新的日期将对象插入数组
- php - 如何组合或合并单个数组中的多个值?
- r - Rstudio 的“在文件中查找”中的正则表达式