क्या 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) का निर्माण करने के लिए, आपको फोरट्रान पुस्तकालयों 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 कमांड में से केवल एक को निष्पादित करें। मैंने सभी पर टिप्पणी की है, लेकिन मैं जिस गोरफरान का उपयोग करता हूं। बाद के लैपैक इंस्टॉलेशन के लिए एक फोरट्रान 90 कंपाइलर की आवश्यकता होती है , और चूंकि दोनों इंस्टॉल्स को एक ही फोरट्रान कंपाइलर का उपयोग करना चाहिए, जी 7 का उपयोग बीएलएएस के लिए नहीं किया जाना चाहिए।

इसके बाद, आपको 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-Sep-2015 को अपडेट करें: आज कुछ टिप्पणियों को सत्यापित करें (सभी के लिए धन्यवाद): फ़ाइल को make lapacklibसंपादित करने make.incऔर चलाने और सेटिंग्स में -fPICविकल्प जोड़ने से पहले । यदि आप एक 64 बिट वास्तुकला पर हैं या एक के लिए संकलन करना चाहते हैं, तो भी जोड़ें । यह महत्वपूर्ण है कि BLAS और LAPACK एक ही मान पर सेट इन विकल्पों के साथ संकलित किए जाते हैं। यदि आप भूल जाते हैं तो SciPy वास्तव में आपको लापता प्रतीकों के बारे में एक त्रुटि देगा और इस स्विच की सिफारिश करेगा। मेरे सेटअप में इस तरह का विशिष्ट अनुभाग :OPTSNOOPT-m64-fPICmake.inc

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

पुरानी मशीनों (जैसे RedHat 5) पर, पुराने संस्करण (जैसे 4.1.2) में gfortran स्थापित किया जा सकता है और विकल्प को नहीं समझता है -frecursive। बस make.incऐसे मामलों में इसे फ़ाइल से हटा दें ।

Makefile का लैपैक परीक्षण लक्ष्य मेरे सेटअप में विफल रहता है क्योंकि यह blas पुस्तकालयों को नहीं खोज सकता है। यदि आप पूरी तरह से हैं, तो आप लैपैक का परीक्षण करने के लिए अस्थायी रूप से ब्लास लाइब्रेरी को निर्दिष्ट स्थान पर स्थानांतरित कर सकते हैं। मैं एक आलसी व्यक्ति हूं, इसलिए मुझे विश्वास है कि देवों ने इसे काम करने के लिए और केवल SciPy में सत्यापित किया है।


5
हालांकि blas.tgz में कोई भी लिबास नहीं है।
joedborg

32
मेरे लिए काम किया है, लेकिन मुझे make.incफ़ाइल को सेटिंग करके संपादित करना था OPTS = -O2 -fPICऔर NOOPT = -O0 -fPIC
गुई ११

8
@jdborg को जाहिरा तौर पर अब सिर्फ liblapack.a कहा जाता है
una_dinosauria

7
मुझे मेक.इन फ़ाइल में OPTS और NOOPT सेटिंग में -m64 विकल्प जोड़ना था। आप में से केवल एक 64 बिट मशीन पर हैं।
mjspier

21
+1 इसके लिए बहुत धन्यवाद! इसके अलावा, डराने के लिए, मुझे अंत में export LAPACK=~/src/lapack-3.5.0/जोड़ने के बजाय करना था libflapack.a
लेजेंड

328

यदि आपको पैक किए गए संस्करण के बजाय SciPy के नवीनतम संस्करणों का उपयोग करने की आवश्यकता है, तो BLAS और LAPACK के निर्माण की परेशानी से गुजरे बिना, आप नीचे दी गई प्रक्रिया का पालन कर सकते हैं।

रिपोजिटरी (उबंटू के लिए) से रैखिक बीजगणित पुस्तकालय स्थापित करें,

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

फिर SciPy स्थापित करें, (SciPy स्रोत डाउनलोड करने के बाद): python setup.py installया

pip install scipy

के रूप में मामला हो सकता है।


11
यह मेरे लिए काम करता है, tks! हालांकि मैं बदलना पड़ा libopenblas-devकरने के लिए libblas-dev(उबंटू 10.04)।
अल्फेटोपिटो

1
मेरे लिए पूरी तरह से मिंट 13 (सटीक कांटा) चलाने के लिए काम किया। आपको अलग से स्रोत डाउनलोड करने की आवश्यकता है, अगर आप easy_install -U #update का उपयोग करते हैं
wbg

2
यह निर्दोष रूप से काम किया। मुझे अपने मामले में कुछ अलग करने की ज़रूरत नहीं थी (ubuntu
12.0.4

1
sudo apt-get install python-devठीक कर दिया। stackoverflow.com/a/21530768/125507
एंडोलिथ

3
sudo yum install blas-devel lapack-develमेरे लिए काम किया
रोमन

66

फेडोरा पर, यह काम करता है:

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

याद रखें कि 'blas' और 'lapack' के अलावा ' lapack-devel ' और ' blas-devel ' को स्थापित करना अन्यथा आपको आपके द्वारा बताई गई त्रुटि या "numpy.distutils.system_info। लापराथन डॉटफ़ाउंडर " त्रुटि मिलेगी


यह कहता है "ब्लास-देव के लिए सार्वजनिक कुंजी .." स्थापित नहीं है। :(
ओल्गा म्यू

@OlgaMu "yum --nogpgcheck install blas-devel" का उपयोग करें
मुनीब अली

blas-staticऔर lapack-staticफेडोरा 20 पर मेरे लिए आवश्यक थे
hobs

धन्यवाद! यह मेरे लिए मेरे AWS EC2 अमेज़न लिनक्स मशीन पर काम किया।
लील 'बिट्स

यह वर्चुअलाइजेशन के लिए काम नहीं करता है, हालांकि, यह विफल है जब तक कि मैं पाइप इंस्टॉल के लिए sudo का उपयोग नहीं करता। कोई विचार?
user1610719

44

मुझे लगता है कि आप उबंटू में स्थापना के बारे में बात कर रहे हैं। महज प्रयोग करें:

apt-get install python-numpy python-scipy

साथ ही संकलित BLAS पुस्तकालयों का भी ध्यान रखना चाहिए। अतिरिक्त, BLAS पुस्तकालयों का संकलन बहुत कठिन है।


12
@ V3ss0n, BLAS और LAPACK का निर्माण बेहद मुश्किल है। यह उन दो शापित पैकेजों को समझने की तुलना में कर्नेल को खरोंच से संकलित और स्थापित करना बहुत आसान है।
निकोलस मंचुसो

@ कोडर, मुझे लगा कि मेरे डेबियन बॉक्स पर यह कैसे करना है। उबंटू के लिए भी काम करना चाहिए। इसे देखें: ydevel.tumblr.com/post/37462965735/… [DISCLAIMER: मैं इस पोस्ट का लेखक हूँ]
yati sagade

@ निचलोलसैंकोसो वास्तव में मुश्किल है, लेकिन मैं पूरे अजगर (रिलोकेबल) + लैपैक + एटलस (बीएलएएस से बेहतर) स्काइप, स्किकिट, मैप्लोटलिब, नेटवर्कएक्स और अन्य सी डिपेंडेंसी का एक बहुत कुछ बनाने का प्रबंधन करता हूं। मेरा पूरा रनटाइम फ़ोल्डर अब 900 एमबी (पायथन, पर्ल, जावा भी शामिल है) हाहा,। लेकिन यह मेरी परियोजनाओं को एक फ़ोल्डर में अपने रनटाइम के साथ पूरी तरह से स्थानांतरित कर देता है। अगर जरूरत हो तो मुझे बताएं। वर्चुनाव की तुलना में बहुत बेहतर है।
फ़िओ अर्कार Lwin

@yatisagade, @Coder, वास्तव में, आपको pip install scipyवर्चुअल वातावरण में स्रोत से इसका उपयोग या निर्माण करने में सक्षम होना चाहिए ।
आर्थर


2

'Cfi' द्वारा दिए गए निर्देशों के बाद मेरे लिए काम करता है, हालांकि कुछ टुकड़े हैं जो उन्होंने छोड़ दिए हैं जिनकी आपको आवश्यकता हो सकती है:

1) आपका लैपैक डायरेक्टरी, अनज़िप करने के बाद, लैपैक-एक्सवाई (कुछ वर्जन नंबर) कहा जा सकता है, इसलिए आप इसका नाम बदलकर लैपैक रख सकते हैं।

cd ~/src
mv lapack-[tab] LAPACK

2) उस निर्देशिका में, आपको करने की आवश्यकता हो सकती है:

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.