使用Meson安装带MKL的Scipy失败求助
解决通过pip从源码构建使用MKL BLAS的Scipy 1.9.1问题
问题背景
你尝试用pip源码安装带MKL BLAS实现的Scipy 1.9.1,安装NumPy时执行pip install numpy --no-binary numpy可成功,但运行pip install scipy --no-binary scipy时失败,报错信息如下:
Run-time dependency openblas found: NO (tried pkgconfig and cmake)
../../scipy/meson.build:130:0: ERROR: Dependency "OpenBLAS" not found, tried pkgconfig and cmake
旧版Scipy可通过环境变量或site.cfg指定BLAS库,但新版采用Meson构建系统后不再支持这些方式,需用Meson兼容的配置方法指定MKL。
解决方案
Scipy 1.9.x基于Meson构建时,可通过以下两种方式指定MKL作为BLAS后端:
方法1:通过环境变量传递Meson参数
执行pip安装命令前,设置MESON_ARGS环境变量,明确告知Meson使用MKL:
# Linux/macOS export MESON_ARGS="-Dblas=mkl -Dlapack=mkl" pip install scipy==1.9.1 --no-binary scipy # Windows(PowerShell) $env:MESON_ARGS = "-Dblas=mkl -Dlapack=mkl" pip install scipy==1.9.1 --no-binary scipy
方法2:直接通过pip的--config-settings传递参数
从pip 21.3版本开始支持--config-settings参数,可直接将Meson配置项传递给构建过程:
pip install scipy==1.9.1 --no-binary scipy --config-settings="setup-args=-Dblas=mkl -Dlapack=mkl"
额外注意事项
- 确保系统已正确安装MKL开发库,且MKL的环境变量(如
MKLROOT)已配置完成,Meson需要能定位到MKL的头文件和库文件。 - 如果MKL未通过标准路径安装,可在
MESON_ARGS中添加MKL路径配置:export MESON_ARGS="-Dblas=mkl -Dlapack=mkl -Dblas.mkl_root=/path/to/mkl -Dlapack.mkl_root=/path/to/mkl" - 验证安装结果:安装完成后,可在Python中执行以下代码确认BLAS后端:
输出中应包含import scipy print(scipy.show_config())blas_mkl_info相关条目,表明已成功使用MKL。
内容的提问来源于stack exchange,提问作者Evan Gaertner
相关产品推荐
相关产品推荐

