[python] Python SciPy에 BLAS가 필요합니까?

numpy.distutils.system_info.BlasNotFoundError: 
    Blas (http://www.netlib.org/blas/) libraries not found.
    Directories to search for the libraries can be specified in the
    numpy/distutils/site.cfg file (section [blas]) or by setting
    the BLAS environment variable.

이 사이트에서 어떤 타르를 다운로드해야합니까?

fortrans를 시도했지만 환경 변수를 분명히 설정 한 후이 오류가 계속 발생합니다.



답변

SciPy는 웹 페이지 구축 및 설치 지침을 제공하는 데 사용하지만,이 지침은 이제 OS 바이너리 배포판에 의존하고 있습니다. 필수 라이브러리의 사전 컴파일 된 패키지없이 운영 체제에서 SciPy (및 NumPy)를 빌드하려면 Fortran 라이브러리 BLASLAPACK 을 빌드 한 후 정적으로 링크해야합니다 .

mkdir -p ~/src/
cd ~/src/
wget http://www.netlib.org/blas/blas.tgz
tar xzf blas.tgz
cd BLAS-*

## NOTE: The selected Fortran compiler must be consistent for BLAS, LAPACK, NumPy, and SciPy.
## For GNU compiler on 32-bit systems:
#g77 -O2 -fno-second-underscore -c *.f                     # with g77
#gfortran -O2 -std=legacy -fno-second-underscore -c *.f    # with gfortran
## OR for GNU compiler on 64-bit systems:
#g77 -O3 -m64 -fno-second-underscore -fPIC -c *.f                     # with g77
gfortran -O3 -std=legacy -m64 -fno-second-underscore -fPIC -c *.f    # with gfortran
## OR for Intel compiler:
#ifort -FI -w90 -w95 -cm -O3 -unroll -c *.f

# Continue below irrespective of compiler:
ar r libfblas.a *.o
ranlib libfblas.a
rm -rf *.o
export BLAS=~/src/BLAS-*/libfblas.a

5 개의 g77 / gfortran / ifort 명령 중 하나만 실행하십시오. 나는 모든 것을 언급했지만 내가 사용하는 gfortran. 후속 LAPACK 설치에는 Fortran 90 컴파일러 가 필요하며 두 설치 모두 동일한 Fortran 컴파일러를 사용해야하므로 g77을 BLAS에 사용해서는 안됩니다.

다음으로 LAPACK을 설치해야합니다. SciPy 웹 페이지의 지침이 여기에도 도움이되었지만 환경에 맞게 수정해야했습니다.

mkdir -p ~/src
cd ~/src/
wget http://www.netlib.org/lapack/lapack.tgz
tar xzf lapack.tgz
cd lapack-*/
cp INSTALL/make.inc.gfortran make.inc          # On Linux with lapack-3.2.1 or newer
make lapacklib
make clean
export LAPACK=~/src/lapack-*/liblapack.a

검증 어떤 코멘트 오늘 (모두에게 감사) : 업데이트 3 – 9 월 2015 실행하기 전에 make lapacklib편집에게 make.inc파일을 추가 -fPIC로 옵션 OPTSNOOPT설정. 64 비트 아키텍처를 사용하거나 컴파일하려는 경우을 추가하십시오 -m64. BLAS 및 LAPACK은 이러한 옵션을 동일한 값으로 설정하여 컴파일해야합니다. -fPICSciPy 를 잊어 버린 경우 실제로 누락 된 심볼에 대한 오류를 표시하고이 스위치를 권장합니다. make.inc내 설정에서 특정 섹션은 다음과 같습니다.

FORTRAN  = gfortran 
OPTS     = -O2 -frecursive -fPIC -m64
DRVOPTS  = $(OPTS)
NOOPT    = -O0 -frecursive -fPIC -m64
LOADER   = gfortran

구형 컴퓨터 (예 : RedHat 5)에서 gfortran은 이전 버전 (예 : 4.1.2)으로 설치되었을 수 있으며 옵션을 이해하지 못합니다 -frecursive. make.inc이러한 경우 파일에서 간단히 제거하십시오 .

Makefile의 lapack 테스트 대상이 blas 라이브러리를 찾을 수 없기 때문에 설정에서 실패합니다. 철저한 경우 blas 라이브러리를 지정된 위치로 일시적으로 이동하여 lapack을 테스트 할 수 있습니다. 나는 게으른 사람이므로 개발자가 SciPy에서만 작동하고 확인하도록 믿습니다.


답변

BLAS 및 LAPACK을 작성하는 번거 로움없이 패키지 버전이 아닌 최신 버전의 SciPy를 사용해야하는 경우 아래 절차를 수행 할 수 있습니다.

저장소 (우분투 용)에서 선형 대수 라이브러리를 설치하십시오.

sudo apt-get install gfortran libopenblas-dev liblapack-dev

그런 다음 SciPy 소스를 다운로드 한 후 SciPy를 설치하십시오. python setup.py install또는

pip install scipy

경우에 따라


답변

Fedora에서는 다음과 같이 작동합니다.

 yum install lapack lapack-devel blas blas-devel
 pip install numpy
 pip install scipy

‘blas’및 ‘lapack’외에 ‘ lapack-devel ‘및 ‘ blas-devel ‘ 을 설치해야합니다. 그렇지 않으면 언급 한 오류 또는 “numpy.distutils.system_info. LapackNotFoundError “오류가 발생합니다.


답변

우분투에서의 설치에 대해 이야기하고 있다고 생각합니다. 그냥 사용하십시오 :

apt-get install python-numpy python-scipy

BLAS 라이브러리 컴파일도 처리해야합니다. 그렇지 않으면 BLAS 라이브러리를 컴파일하는 것은 매우 어렵습니다.


답변

Windows 사용자에게는 Chris의 멋진 이진 패키지가 있습니다 (경고 : 191MB로 매우 큰 다운로드입니다).


답변

‘cfi’가 제공 한 지침을 따르면 나를 위해 작동하지만 필요한 몇 가지 부분이 있지만

1) 압축을 푼 후에 lapack 디렉토리를 lapack-XY (일부 버전 번호)라고 할 수 있으므로 LAPACK으로 이름을 바꿀 수 있습니다.

cd ~/src
mv lapack-[tab] LAPACK

2) 해당 디렉토리에서 다음을 수행해야 할 수도 있습니다.

cd ~/src/LAPACK
cp lapack_LINUX.a libflapack.a


답변

사용해보십시오

sudo apt-get install python3-scipy