Чи потрібен Python SciPy BLAS?


176
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.

Який дьоготь мені потрібно завантажити з цього сайту?

Я спробував фортранс, але я продовжую отримувати цю помилку (очевидно, після встановлення змінної середовища).


Тож питання полягає в тому, яка саме версія для завантаження вашої системи з якогось сайту, але ні деталі системи, ні сайт не вказані у питанні? Не дивно, що відповіді не було.
Майкл Дж. Барбер

Відповіді:


143

Веб- сторінка SciPy використовувалась для надання інструкцій по збірці та встановленню, але там інструкції покладаються на бінарні дистрибутиви ОС. Щоб побудувати 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

Виконайте лише одну з п’яти команд 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 вересня 2015 року. Підтверджено сьогодні деякі коментарі (спасибі всім): Перед запуском make lapacklibвідредагуйте make.incфайл та додайте -fPICпараметр OPTSта NOOPTпараметри. Якщо ви маєте 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 не вдається встановити, оскільки він не може знайти бібліотеки blas. Якщо ви ретельно ви можете тимчасово перенести бібліотеку Blas у вказане місце, щоб перевірити лапак. Я лінива людина, тому я довіряю розробникам, щоб він працював і перевіряв лише в SciPy.


5
У blas.tgz, однак, немає libfblas.
joedborg

32
Для мене працювали, але мені довелося редагувати make.incфайл, встановивши OPTS = -O2 -fPICі NOOPT = -O0 -fPIC.
gui11aume

8
@jdborg його, мабуть, називають просто liblapack.a зараз
una_dinosauria

7
Мені довелося додати параметри -m64 до налаштувань OPTS та NOOPT у файлі make.inc. Тільки ви на 64-розрядній машині, звичайно.
mjspier

21
+1 Дякую за це! Крім того, для scipy, я повинен був зробити export LAPACK=~/src/lapack-3.5.0/замість того, щоб додати libflapack.aв кінці.
Легенда

328

Якщо вам потрібно використовувати найновіші версії SciPy, а не упаковану версію, не переживаючи проблем із складанням BLAS та LAPACK, ви можете дотримуватися наведеної нижче процедури.

Встановіть лінійні бібліотеки алгебр із сховища (для Ubuntu),

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

Потім встановіть SciPy (після завантаження джерела SciPy): python setup.py installабо

pip install scipy

Залежно від випадку.


11
Це працювало для мене, tks! Хоча мені довелося перейти libopenblas-devна libblas-dev(Ubuntu 10.04).
alfetopito

1
для мене прекрасно працював монетний двір 13 (точна виделка). Вам потрібно завантажити джерело окремо, якщо ви використовуєте easy_install -U #update
wbg

2
Це працювало бездоганно. Мені не довелося нічого робити в моєму випадку (ubuntu 12.0.4)
MisterWalrus

1
sudo apt-get install python-devвиправили це. stackoverflow.com/a/21530768/125507
endolith

3
sudo yum install blas-devel lapack-develпрацював на мене
Роман

66

У Fedora це працює:

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

Не забудьте встановити " lapack-devel " і " blas-devel " на додаток до "blas" і "lapack", інакше ви отримаєте вказану вами помилку або помилку "numpy.distutils.system_info. LapackNotFoundError ".


У ньому написано, що "відкритий ключ для blas-dev .." не встановлений. :(
Ольга Му

@OlgaMu Використовуйте "yum --nogpgcheck install blas-devel"
Muneeb Ali

blas-static& lapack-staticбули потрібні мені на Fedora 20.
варильні панелі

Дякую! Це працювало для мене на моїй машині AWS EC2 Amazon Linux.
Lil 'Bits

Це не працює для віртуальної навколишнього середовища, але не працює, якщо я не використовую sudo для встановлення файлу. Будь-які ідеї?
користувач1610719

44

Я думаю, ви говорите про встановлення в Ubuntu. Просто використовуйте:

apt-get install python-numpy python-scipy

Для цього слід подбати і про складання бібліотек BLAS. Інше, скласти бібліотеки BLAS дуже складно.


12
@ V3ss0n, побудувати BLAS та LAPACK, як відомо, важко. Набагато простіше компілювати та встановлювати ядра з нуля, ніж компілювати ці два прокляті пакети imho.
Ніколас Манкузо

@Coder, я зрозумів, як це зробити у своєму вікні Debian. Має працювати і для Ubuntu. перевірити це: ydevel.tumblr.com/post/37462965735/… [ВІДМОВА: Я автор публікації]
yati sagade

@NicholasMancuso Це справді важко, але мені вдається створити цілий python (Переміщається) + Lapack + ATLAS (краще, ніж BLAS) Scipy, Scikit, Maplotlib, NetworkX та багато інших C-залежностей. У мене вся папка Runtime зараз 900 Мб (Python, Perl, Java також включена) ха-ха. Але це робить мої проекти повністю переселеними з власним часом виконання в одну папку. Дайте мені знати, якщо вам це потрібно. Шлях набагато краще, ніж Virtualenv.
Пхіо Аркар Лвін

@yatisagade, @Coder, дійсно, вам потрібно мати можливість використовувати pip install scipyабо створювати його з джерела у віртуальному середовищі.
Артур


2

Дотримуючись вказівок, наданих 'cfi', для мене працює, хоча вони залишили кілька фрагментів, які вам можуть знадобитися:

1) Ваш каталог lapack після розпакування може називатися lapack-XY (деякий номер версії), тому ви можете просто перейменувати його на LAPACK.

cd ~/src
mv lapack-[tab] LAPACK

2) У цьому каталозі вам може знадобитися:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.