2014-04-27 9 views
6

Ich baue numpy aus der Quelle auf CentOS 6.5 ohne Root-Zugriff (Python -V = 2.7.6). Ich habe die neueste numpy Quelle von Git. Ich kann nicht für das Leben von mir taub werden, um Atlas-Bibliotheken anzuerkennen. Ich habe:Korrekter Weg, um auf ATLAS/BLAS/LAPACK-Bibliotheken für numpy build zu zeigen?

ls -1 /usr/lib64/atlas 

libatlas.so.3 
libatlas.so.3.0 
libcblas.so.3 
libcblas.so.3.0 
libclapack.so.3 
libclapack.so.3.0 
libf77blas.so.3 
libf77blas.so.3.0 
liblapack.so.3 
liblapack.so.3.0 
libptcblas.so.3 
libptcblas.so.3.0 
libptf77blas.so.3 
libptf77blas.so.3.0 

Ich weiß nichts darüber, wie diese Libs kam, aber ich kann nur davon ausgehen, dass der Atlas wäre schneller aufbaut als jeder Standard BLAS/LAPACK baut ich machen könnte.

Wie kann numpy auf diese Bibliotheken verweisen? Tue ich export ATLAS, BLAS, LAPACK=... Einstellung jedes auf den entsprechenden Pfad? oder bearbeite ich eine site.cfg Datei wie etwas enthalten:

[default] 
library_dirs = /usr/lib64/atlas 

[atlas] 
library_dirs = /usr/lib64/atlas 
atlas_libs = lapack, cblas, f77blas, atlas 

Ich habe versucht, so gut wie jede Variation der oben genannten, und jedes Mal, wenn ich python setup.py config führe Sie es mir sagt, jede Bibliothek kann nicht in den Pfaden zu finden angegebenen sowie eine Reihe anderer Standardsuchpfade. Ich habe die Ergebnisse der Ausführung von python setup.py config mit der site.cfg wie oben eingefügt und keine Umgebungsvariablen hier festgelegt: http://pastebin.com/EL9CfaR7. Jede Hilfe wird geschätzt.

Antwort

7

Ok das war ziemlich einfach und folgt im Wesentlichen den Installationsrichtlinien genau. Ich nehme an, das ist eher eine Frage nach den Nummern nach Shared-Bibliotheken als nach Numpy oder Atlas. Wie auch immer, ich hatte nur ein paar symbolische Links zu erstellen:

ln -s /usr/lib64/atlas/___.so.3.0 $HOME/local/lib/___.so 

Dann alle configs in der site.cfg entfernt und aktualisiert mein .bashrc:

export ATLAS=$HOME/local/lib/libatlas.so 
export BLAS=$HOME/local/lib/libptf77blas.so 
export LAPACK=$HOME/local/lib/liblapack.so 

Nach python setup.py install läuft, ich bin gut:

>>> import numpy.distutils.system_info as si 
>>> si.get_info('atlas') 
    ATLAS version 3.8.4 built by mockbuild on Wed Mar 21 01:43:44 GMT 2012: 
    UNAME : Linux c6b6.bsys.dev.centos.org 2.6.32-44.2.el6.x86_64 #1 SMP Wed Jul 21 12:48:32 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux 
    INSTFLG : -1 0 -a 1 
    ARCHDEFS : -DATL_OS_Linux -DATL_ARCH_PII -DATL_CPUMHZ=2261 -DATL_SSE2 -DATL_SSE1 -DATL_USE64BITS -DATL_GAS_x8664 
    F2CDEFS : -DAdd_ -DF77_INTEGER=int -DStringSunStyle 
    CACHEEDGE: 163840 
    F77  : gfortran, version GNU Fortran (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3) 
    F77FLAGS : -fomit-frame-pointer -mfpmath=387 -O2 -falign-loops=4 -g -Wa,--noexecstack -fPIC -m64 
    SMC  : gcc, version gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3) 
    SMCFLAGS : -fomit-frame-pointer -mfpmath=387 -O2 -falign-loops=4 -g -Wa,--noexecstack -fPIC -m64 
    SKC  : gcc, version gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3) 
    SKCFLAGS : -fomit-frame-pointer -mfpmath=387 -O2 -falign-loops=4 -g -Wa,--noexecstack -fPIC -m64 
{'libraries': ['lapack', 'f77blas', 'cblas', 'atlas'], 'library_dirs': ['~/local/lib'], 'define_macros': [('ATLAS_INFO', '"\\"3.8.4\\""')], 'language': 'f77'} 
+0

Das scheint furchtbar kompliziert. Hast du stattdessen einen virtualenv ausprobiert? Sie können Ihren vollständigen Python-Stack in Ihrem Home-Ordner haben, also brauchen Sie keinen Root-Zugriff für irgendetwas. Und dann kannst du Pip für alles verwenden. – Davidmh

+0

Ich bin nicht vertraut mit virtualenv, aber von einem Blick darauf, ich bin mir nicht sicher, ob es nützlich wäre. Ich habe bereits (gut HAD - ich bin in einigen anderen Fragen läuft) python/numpy/scipy lokal installiert. Ich versuche nicht, mehrere Versionen von numpy zu installieren - ich sage nur der einen Version, eine bestimmte Atlas-Bibliothek zu verwenden, die (wie ich annehme) für die Architektur optimiert wurde, auf der ich arbeite. –

+0

(Ja, ich weiß, das ist alt) Sie brauchen das Paket -devel. Da Sie keinen Root haben, können Sie ihn nicht installieren, aber Sie sollten Ihren Administrator darum bitten. Das Paket -devel verfügt über Header und den Symlink .so –