web-dev-qa-db-ja.com

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.

このサイトからどのtarをダウンロードする必要がありますか?

私はfortransを試しましたが、このエラーが表示され続けます(明らかに環境変数を設定した後)。

171
jdborg

SciPy webpage はビルドとインストールの指示を提供するために使用されていましたが、現在の指示はOSバイナリ配布に依存しています。必要なライブラリのプリコンパイルパッケージなしでオペレーティングシステム上でSciPy(およびNumPy)をビルドするには、ビルドしてからFortranライブラリに静的にリンクする必要があります BLAS および LAPACK

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コマンドのうち1つだけを実行します。私はすべてコメントアウトしましたが、私が使用するgfortranはコメントアウトしました。後続のLAPACKインストールには Fortran 9 コンパイラーが必要です。両方のインストールで同じFortranコンパイラーを使用する必要があるため、g77はBLASに使用しないでください。

次に、LAPACKをインストールする必要があります。 SciPy Webページの指示もここで役立ちましたが、環境に合わせて変更する必要がありました。

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

2015年9月3日に更新:今日いくつかのコメントを検証しました(すべてに感謝):make lapacklibを実行する前に、make.incファイルを編集し、OPTSおよびNOOPT設定に-fPICオプションを追加します。 64ビットアーキテクチャを使用している場合、またはそのためにコンパイルする場合は、-m64も追加します。 BLASとLAPACKは、これらのオプションを同じ値に設定してコンパイルすることが重要です。 -fPICを忘れると、SciPyは実際にシンボルの欠落に関するエラーを表示し、このスイッチを推奨します。 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でのみ動作して検証することを信頼しています。

140
cfi

パッケージ化されたバージョンではなく、最新バージョンのSciPyを使用する必要があり、BLASとLAPACKを構築する手間をかけずに、以下の手順に従うことができます。

リポジトリから線形代数ライブラリをインストールします(Ubuntuの場合)、

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

次に、SciPyをインストールします(SciPyソースをダウンロードした後):python setup.py installまたは

pip install scipy

場合によっては。

327
AIB

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 "エラー。

66
Muneeb Ali

Ubuntuでのインストールについて話していると思います。使用するだけ:

apt-get install python-numpy python-scipy

BLASライブラリのコンパイルにも注意が必要です。それ以外の場合、BLASライブラリのコンパイルは非常に困難です。

44
Vishwanath

Windowsユーザーの場合、ChrisによるNiceバイナリパッケージがあります(警告:かなり大きなダウンロード、191MB):

12
jmunsch

'cfi'によって与えられた指示に従うことは私にとってはうまくいきますが、あなたが必要とするかもしれないいくつかの断片が残っていますが:

1)解凍後のlapackディレクトリはlapack-X-Y(バージョン番号)と呼ばれる場合があるため、LAPACKに名前を変更できます。

cd ~/src
mv lapack-[tab] LAPACK

2)そのディレクトリで、次の操作が必要になる場合があります。

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