= Building Scipy = Table of contents:: [[TableOfContents]] == Introduction == The !SciPy project provides two packages: !NumPy (formerly known as core !SciPy) and full !SciPy. The !NumPy package is a replacement of Numeric and should be installed before building the full !SciPy package. Installing both packages is simple. In most cases simply executing {{{ python setup.py install }}} in the {{{numpy}}} and {{{scipy}}} directories will install each package. The rest of this document concentrates on configuring, building, installing, or/and using various external software that Scipy can use for extra power. Note that to avoid problems, it can be a good idea to remove the local {{{build}}} directory (if any) and existing Scipy installations, before building and installing a new version built from sources. Also note that the use of {{{pip}}} and especially {{{easy_install}}} is not recommended, as these tools often have problems where the standard {{{python setup.py install}}} does not. == Python == To build !SciPy, Python version 2.4 or newer is required. Make sure that the Python package {{{distutils}}} is installed before continuing. For example, in Debian GNU/Linux, {{{distutils}}} is included in the {{{python-dev}}} package. If while building SciPy, "error: pyconfig.h: No such file or directory" is encountered, ensure that Python is installed a directory that is different from its source. == Compilers == To build any extension modules for Python, you'll need a C compiler. Various !SciPy modules use Fortran 77 libraries and some use C++, so you'll also need Fortran 77 and C++ compilers installed. The !SciPy module Weave uses a C++ compiler at run time. Note that !SciPy is developed mainly using GNU compilers. Compilers from other vendors such as Intel, Absoft, Sun, NAG, Compaq, Vast, Porland, Lahey, HP, IBM are supported in the form of community feedback. gcc 3.x compilers are recommended. Note that code compiled by the Intel Fortran Compiler (IFC) is not binary compatible with code compiled by g77. Therefore, when using IFC, all Fortran codes used in !SciPy must be compiled with IFC. This also includes the LAPACK, BLAS, and ATLAS libraries. Using GCC for compiling C code is OK. IFC version 5.0 is not supported. To build !NumPy, only a C compiler is required. If you see an error message {{{ ImportError: /usr/lib/atlas/libblas.so.3gf: undefined symbol: _gfortran_st_write_done }}} when building '''SciPy''', it means that '''NumPy''' picked up the wrong Fortran compiler during build (e.g. ifort). Recompile NumPy using: {{{ python setup.py build --fcompiler=gnu95 }}} or whichever is appropriate (see {{{python setup.py build --help-fcompiler}}}). == Linear Algebra libraries == Various !SciPy packages do linear algebra computations using the LAPACK routines. !SciPy's setup.py scripts can use number of different LAPACK library setups, including optimized LAPACK libraries such as ATLAS or the Accelerate/vecLib framework on OS X. The following notes give detailed information on how to prepare the build environment so that !SciPy's setup.py scripts can use whatever LAPACK library setup one has. !NumPy does not require any external linear algebra libraries to be installed. However, if these are available, !NumPy's setup script can detect them and use them for building. If you do not plan to build the full !SciPy then you can skip this section. === Building BLAS library from Netlib === Download BLAS sources from Netlib, build {{{libfblas.a}}} library, and set environment variable {{{BLAS}}}: {{{ 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 }}} See the note at the end of the section below on building LAPACK. === Building LAPACK library from Netlib === Download LAPACK sources from Netlib, build {{{libflapack.a}}} library, and set environment variable {{{LAPACK}}}: {{{ mkdir -p ~/src wget http://www.netlib.org/lapack/lapack.tgz tar xzf lapack.tgz cd ~/src/LAPACK cp INSTALL/make.inc.gfortran make.inc # on Linux with lapack-3.2.1 or newer cp INSTALL/make.inc.LINUX make.inc # on Linux with older lapack # Edit make.inc as follows: # For GNU compiler on 32-bit Linux (these are the defaults): PLAT = _LINUX OPTS = -O2 # OR for GNU compiler on 64-bit Linux: PLAT = _LINUX OPTS = -O2 -m64 -fPIC NOOPT = -m64 -fPIC # OR for Absoft (8.x or later): PLAT = _LINUX OPTS = -O3 -YNO_CDEC # OR for Intel Fortran compiler on Linux: wget http://www.scipy.org/download/misc/make.inc.LINUX_IFC cp make.inc.LINUX_IFC make.inc # Continue below irrespective of compiler: make lapacklib make clean cp lapack_LINUX.a libflapack.a # on Linux export LAPACK=~/src/LAPACK/libflapack.a }}} In the event that SciPy is unable to find the {{{libf*}}} names, a symbolic link can be made from these files to {{{libblas.a}}} and {{{liblapack.a}}}. NumPy is not expected to have this problem. === Further Instructions === More detailed platform-specific instructions for building and installing !SciPy can be found on the ["Installing SciPy"] page. ---- . CategoryInstallation