为什么当我尝试通过 pip 安装 SciPy 时,RHEL 上检测不到 ATLAS?

为什么当我尝试通过 pip 安装 SciPy 时,RHEL 上检测不到 ATLAS?

我正在使用 RHEL6、Python 2.6.6,并尝试通过 pip 安装 SciPy。

[user@server ~]$ sudo pip install scipy
<snip>
atlas_blas_threads_info:
Setting PTATLAS=ATLAS
  libraries ptf77blas,ptcblas,atlas not found in ['/usr/local/lib64', '/usr/local/lib', '/usr/lib64/atlas']
  NOT AVAILABLE
<snip>

但是,当我列出 /usr/lib64/atlas 中的文件时:

[user@server ~]$ ls /usr/lib64/atlas
libcblas.so.3    libclapack.so.3.0  liblapack.so.3     libptcblas.so.3.0
libatlas.so.3    libcblas.so.3.0    libf77blas.so.3    liblapack.so.3.0  libptf77blas.so.3
libatlas.so.3.0  libclapack.so.3    libf77blas.so.3.0  libptcblas.so.3   libptf77blas.so.3.0

有任何想法吗?

答案1

Numpy 和 Scipy 是奇怪的野兽。最大的烦恼是Fortran ABI 不匹配等等。从安装页面

如果你的 blas/lapack/atlas 是用 g77 构建的,那么在构建 numpy 和 scipy 时也必须使用 g77;

如果您的 atlas 是用 gfortran 构建的,那么您必须用 gfortran 构建 numpy/scipy。

ldd在您拥有的 Atlas 版本上运行。

如果 libg2c.so 是依赖项,则使用 g77,并且您需要在构建时传递这些选项:

python setup.py build --fcompiler=gnu

或者,如果 libgfortran.so 是一个依赖项,它是用 gfortran 构建的,您需要设置正确的 fortran 编译器:

python setup.py build --fcompiler=gnu95

附注:如果您的机器运行的处理器包含 SIMD 支持,我强烈建议安装优化版本的 atlas(例如 atlas3-sse)。

相关内容