Apline linux 安装scikit-learn 过程记录

本文记录了在Apline linux 安装scikit-learn时,踩坑填坑的过程,记录下来避免未来踩同样的坑~

基础环境

Apline linux-v3.9 x86_64

Python-3.7.12

Pip-20.2.1

Setuptools-47.1.0

Wheel-None

Numpy-1.41.6

Scipy-None

Cython-0.29.2-r0

Scikit-learn-1.0.2

STEP 01 尝试ADD安装

python 复制代码
#1.执行命令
RUN apk add py3-scikit-learn
python 复制代码
#2.报错信息
Step 10/18 : RUN apk add py3-scikit-learn
 ---> Running in 2e70b9dc74c1
fetch http://mirrors.aliyun.com/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://mirrors.aliyun.com/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
ERROR: unsatisfiable constraints:
  py3-scikit-learn (missing):
    required by: world[py3-scikit-learn]
The command '/bin/sh -c apk add py3-scikit-learn' returned a non-zero code: 1
ERROR: Job failed: command terminated with exit code 1
python 复制代码
#3.报错分析
在尝试使用 Alpine Linux 的 APK 包管理器安装 py3-scikit-learn 时遇到了问题,
因为 py3-scikit-learn 这个包在 Alpine Linux 的官方仓库中并不存在。
Alpine Linux 的仓库通常只包含轻量级的基础软件包和一些常用的库,
而 scikit-learn 是一个相对复杂且依赖较多的 Python 机器学习库,
通常不包含在 Alpine 的默认仓库中。

STEP 02 尝试PIP安装

python 复制代码
#1.执行命令
RUN pip3 install scikit-learn
python 复制代码
#2.报错信息
Preparing wheel metadata: finished with status 'error'
ERROR: Command errored out with exit status 1:
  command: /usr/local/bin/python3.7 /usr/local/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel /tmp/tmpk1pg8fq4
    cwd: /tmp/pip-install-0h2kn6m6/scikit-learn
  Complete output (1878 lines):
  C compiler: gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC  
  compile options: '-c'
  gcc: test_program.c
  gcc objects/test_program.o -o test_program
  C compiler: gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC  
  compile options: '-c'
  extra options: '-fopenmp'
  gcc: test_program.c
  gcc objects/test_program.o -o test_program -fopenmp
  Compiling sklearn/__check_build/_check_build.pyx because it changed.
......(省略1000+行)
    /tmp/pip-build-env-t31sqbi0/overlay/lib/python3.7/site-packages/scipy/__init__.py:149:             UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.14.6
      UserWarning)
......(省略700+行)
ERROR: Command errored out with exit status 1: /usr/local/bin/python3.7     
   /usr/local/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py 
   prepare_metadata_for_build_wheel /tmp/tmpk1pg8fq4 Check the logs for full command output.
   WARNING: You are using pip version 20.2.1; however, version 24.0 is available.
   You should consider upgrading via the '/usr/local/bin/python3.7 -m pip install --upgrade pip' command.
   The command '/bin/sh -c pip3 install scikit-learn' returned a non-zero code: 1
python 复制代码
#3.报错分析
scikit-learn 在准备 wheel 元数据时遇到了编译错误。
这通常发生在安装需要编译的 Python 包时,
尤其是当系统缺少必要的编译环境或依赖项时;
scikit-learn 在安装过程中正在尝试编译其 Cython 扩展模块,
这是因为它检测到了这些模块有所更改(可能是源代码更新、
Python 环境变化或依赖项版本不匹配等原因)。
然而,在编译过程中,scipy 的初始化脚本发出了一个警告,
指出当前安装的 NumPy 版本(1.14.6)不符合 scipy 的
要求(需要 >=1.16.5 且 <1.23.0 的版本)。

总结:编译阶段报错,可能原因为缺少编译依赖或依赖项版本不匹配

STEP 03 调整PIP安装依赖模块版本

python 复制代码
#1.版本调整
Pip-20.2.1
Wheel-0.42.0                 (新增)
Setuptools-47.1.0 --> 68.0.0 (升级)
Scikit-learn-1.0.2--> 0.21.2 (降级)
Python-3.7.12
Cython-0.29.2-r0  --> 3.0.11 (升级)
Numpy-1.41.6      --> 1.21.6 (降级)
Scipy-1.7.3                  (新增)
python 复制代码
#2. 执行命令
 RUN pip3 install --force-reinstall pip==20.2.1 wheel
      && pip3 install --upgrade setuptools cython    
      && pip3 install numpy scipy     
      && pip3 install scikit-learn==0.21.2

至此,Scikit-learn模块安装成功!

相关推荐
kimnoic5 分钟前
Python数据库学习心得:SQLite、MySQL、PostgreSQL优缺点
开发语言·python
snhna10 分钟前
向量数据库深度实战:从 HNSW 到 pgvector、Milvus 选型与 RAG 落地
数据库·人工智能·python·postgresql·milvus
别动我齐刘海1 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
必须得开心呀1 小时前
python编写带界面的软件,需要安装哪些插件
开发语言·python
Wx-bishekaifayuan1 小时前
express皖美特色农产品网售系统53118-计算机课程设计、毕业设计
人工智能·spring boot·后端·python·课程设计·express·旅游
青少儿编程课堂2 小时前
迪杰斯特拉(Dijkstra)算法:单源最短路与赛场路线规划
c++·python·算法·bfs·信息学竞赛
计算机编程指导师2 小时前
【计算机毕设推荐】基于Hadoop+Spark的公共交通运营数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·数据分析·spark·交通
Wx-bishekaifayuan2 小时前
springboot汉中旅游服务平台41442-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
WeiXin_DZbishe2 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计
泡茶喝茶写代码2 小时前
A股量化数据工程:从 REST 接口到策略信号(第 18 篇):放量缩量异动扫描
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口