使用pip安装scikit-learn:如何理解并确保使用二进制Wheel?
一、表述含义拆解
使用pip时,请确保使用二进制wheel,且不从源码重新编译NumPy和SciPy
二进制wheel是什么
二进制wheel是预编译完成的Python包格式,它已经针对不同操作系统、硬件架构做了编译优化,安装时不需要你自行搭建复杂的编译环境(比如C/C++编译器、Fortran运行环境),直接就能完成部署,速度快且不易出现兼容性问题。为什么不能从源码编译NumPy和SciPy
NumPy和SciPy是scikit-learn的核心底层依赖,它们内部大量调用高性能原生计算代码。从源码编译这两个库需要配置繁琐的编译环境,很容易因为依赖缺失、版本不匹配导致编译失败;就算编译成功,手动编译的版本通常没有官方预编译wheel的性能优化(比如利用CPU指令集加速),运行效率会打折扣,还会耗费大量时间。
二、如何确保做到这一点
先升级pip到最新版本
旧版pip可能不会优先选择二进制wheel,先执行命令升级:pip install --upgrade pip直接用pip安装scikit-learn
正常执行安装命令,pip会自动从PyPI下载适配你系统的二进制wheel包,不会触发源码编译:pip install scikit-learn强制使用二进制包(应对特殊情况)
如果遇到pip意外尝试源码编译的情况,可通过--only-binary参数强制所有依赖都使用二进制wheel:pip install --only-binary :all: scikit-learn numpy scipy避免触发源码编译的操作
不要使用--no-binary参数,也不要手动下载.tar.gz格式的源码包进行安装,这类操作会让pip尝试从源码编译依赖。
内容的提问来源于stack exchange,提问作者Arran Duff

