.. _install_ml_env_alpine:
==============================================
在Alpine Linux安装机器学习环境
==============================================
.. warning::
我尚未完成这个安装部署,原因是 Alpine Linux 默认使用 ``musl`` 库会中断 为glibc发行版编译的 TensorFlow wheels。解决方式是需要自己从源代码编译,或者使用预先编译好的 ``musl-compatible wheel``
我准备后续在部署了 :ref:`gitlab` CI/CD 环境后,再尝试自己完成编译发布
待续...
在 :ref:`alpine_docker_image` 构建 ``alpine-dev`` 镜像,其中部署 :ref:`machine_learning` 工作环境涉及安装 ``scikit-learn`` :
.. literalinclude:: install_ml_env_alpine/venv_install_ml
:caption: 在python的virtualenv中安装机器学习环境
安装报错处理
=================
Python环境安装scikit-learn报错处理
---------------------------------------
涉及安装 ``scikit-learn`` 报错显示缺少 ``pkgconfig`` :
.. literalinclude:: install_ml_env_alpine/pip_install_scikit-learn_error
:caption: 在Python virtualenv环境安装 ``scikit-learn`` 报错信息
上述报错是因为操作系统没有安装 ``python3-dev`` 软件包导致的,该软件包在系统级别提供了Python开发头文件,用于编译源代码。所以解决方法是先安装 ``python3-dev`` 软件包(如果系统已经安装了 ``python3`` ),然后再重新在 :ref:`virtualenv` 环境安装 ``scikit-learn`` 。
.. note::
已修订 :ref:`alpine_docker_image` 构建 ``alpine-dev`` 镜像
Python环境安装tensorflow-cpu提示python版本过高
------------------------------------------------
我最初执行 ``pip install tensorflow-cpu`` 没有指定版本,我以为会自动安装最新版本,其实不是,没有指定版本则会安装版本 ``1.9.1`` ,这时会提示报错:
.. literalinclude:: install_ml_env_alpine/pip_install_tensorflow-cpu_error
:caption: 安装 ``tensorflow-cpu`` 提示python版本过高
实际上 `tensorflow-cpu `_ 最新版本 ``2.20.0`` 是支持Python3系列到 python 3.13 版本的,但是非常奇怪,即使我指定了版本( ``pip install tensorflow-cpu==2.20.0`` ),依然报相同的错误
.. literalinclude:: install_ml_env_alpine/pip_install_tensorflow-cpu
:caption: 安装 ``tensorflow-cpu`` 需要指定版本
按照TensorFlow官方文档 `Install TensorFlow 2 `_ ,看起来直接使用 ``pip install tensorflow`` 就是安装CPU版本,如果要安装GPU版本则使用 ``pip install 'tensorflow[and-cuda]'``
如果使用官方文档安装方法:
.. literalinclude:: install_ml_env_alpine/pip_install_tensorflow
:caption: 安装 ``tensorflow``
但是现在报错显示:
.. literalinclude:: install_ml_env_alpine/pip_install_tensorflow_error
:caption: 安装 ``tensorflow`` 报错找不到匹配的发行版
原因是 TensorFlow 二进制包 依赖 glibc ,在 :ref:`alpine_linux` 上通常是采用 :ref:`docker` 容器方式运行官方提供的镜像
如果要在Alpine Linux上原生运行TensorFlow,需要从源代码编译。 `The simplest way to make Alpine TensorFlow work like it should `_ 提到:
Alpine’s default musl libc often breaks TensorFlow wheels built for glibc-based distros. The fastest fix is to rebuild TensorFlow from source or use a pre-compiled musl-compatible wheel. Either choice yields predictable, repeatable behavior across clusters.