我正在使用 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)。