|
***************************** |
|
Building and installing NumPy |
|
***************************** |
|
|
|
Binary installers |
|
================= |
|
|
|
In most use cases the best way to install NumPy on your system is by using an |
|
installable binary package for your operating system. |
|
|
|
Windows |
|
------- |
|
|
|
Good solutions for Windows are, `Enthought Canopy |
|
<https://www.enthought.com/products/canopy/>`_ (which provides binary |
|
installers for Windows, OS X and Linux) and `Python (x, y) |
|
<http://www.pythonxy.com>`_. Both of these packages include Python, NumPy and |
|
many additional packages. |
|
|
|
A lightweight alternative is to download the Python |
|
installer from `www.python.org <http://www.python.org>`_ and the NumPy |
|
installer for your Python version from the Sourceforge `download site <http:// |
|
sourceforge.net/project/showfiles.php?group_id=1369&package_id=175103>`_ |
|
|
|
The NumPy installer includes binaries for different CPU's (without SSE |
|
instructions, with SSE2 or with SSE3) and installs the correct one |
|
automatically. If needed, this can be bypassed from the command line with :: |
|
|
|
numpy-<1.y.z>-superpack-win32.exe /arch nosse |
|
|
|
or 'sse2' or 'sse3' instead of 'nosse'. |
|
|
|
Linux |
|
----- |
|
|
|
Most of the major distributions provide packages for NumPy, but these can lag |
|
behind the most recent NumPy release. Pre-built binary packages for Ubuntu are |
|
available on the `scipy ppa |
|
<https://edge.launchpad.net/~scipy/+archive/ppa>`_. Redhat binaries are |
|
available in the `EPD <http://www.enthought.com/products/epd.php>`_. |
|
|
|
Mac OS X |
|
-------- |
|
|
|
A universal binary installer for NumPy is available from the `download site |
|
<http://sourceforge.net/project/showfiles.php?group_id=1369& |
|
package_id=175103>`_. The `EPD <http://www.enthought.com/products/epd.php>`_ |
|
provides NumPy binaries. |
|
|
|
Building from source |
|
==================== |
|
|
|
A general overview of building NumPy from source is given here, with detailed |
|
instructions for specific platforms given seperately. |
|
|
|
Prerequisites |
|
------------- |
|
|
|
Building NumPy requires the following software installed: |
|
|
|
1) Python 2.4.x, 2.5.x or 2.6.x |
|
|
|
On Debian and derivative (Ubuntu): python, python-dev |
|
|
|
On Windows: the official python installer at |
|
`www.python.org <http://www.python.org>`_ is enough |
|
|
|
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. |
|
|
|
Python must also be compiled with the zlib module enabled. |
|
|
|
2) Compilers |
|
|
|
To build any extension modules for Python, you'll need a C compiler. |
|
Various NumPy modules use FORTRAN 77 libraries, so you'll also need a |
|
FORTRAN 77 compiler installed. |
|
|
|
Note that NumPy is developed mainly using GNU compilers. Compilers from |
|
other vendors such as Intel, Absoft, Sun, NAG, Compaq, Vast, Porland, |
|
Lahey, HP, IBM, Microsoft are only supported in the form of community |
|
feedback, and may not work out of the box. GCC 3.x (and later) compilers |
|
are recommended. |
|
|
|
3) Linear Algebra libraries |
|
|
|
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. A number of different LAPACK library setups |
|
can be used, including optimized LAPACK libraries such as ATLAS, MKL or the |
|
Accelerate/vecLib framework on OS X. |
|
|
|
FORTRAN ABI mismatch |
|
-------------------- |
|
|
|
The two most popular open source fortran compilers are g77 and gfortran. |
|
Unfortunately, they are not ABI compatible, which means that concretely you |
|
should avoid mixing libraries built with one with another. In particular, if |
|
your blas/lapack/atlas is built with g77, you *must* use g77 when building |
|
numpy and scipy; on the contrary, if your atlas is built with gfortran, you |
|
*must* build numpy/scipy with gfortran. This applies for most other cases |
|
where different FORTRAN compilers might have been used. |
|
|
|
Choosing the fortran compiler |
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
|
|
To build with g77:: |
|
|
|
python setup.py build --fcompiler=gnu |
|
|
|
To build with gfortran:: |
|
|
|
python setup.py build --fcompiler=gnu95 |
|
|
|
For more information see:: |
|
|
|
python setup.py build --help-fcompiler |
|
|
|
How to check the ABI of blas/lapack/atlas |
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
|
|
One relatively simple and reliable way to check for the compiler used to build |
|
a library is to use ldd on the library. If libg2c.so is a dependency, this |
|
means that g77 has been used. If libgfortran.so is a a dependency, gfortran |
|
has been used. If both are dependencies, this means both have been used, which |
|
is almost always a very bad idea. |
|
|
|
Disabling ATLAS and other accelerated libraries |
|
----------------------------------------------- |
|
|
|
Usage of ATLAS and other accelerated libraries in Numpy can be disabled |
|
via:: |
|
|
|
BLAS=None LAPACK=None ATLAS=None python setup.py build |
|
|
|
|
|
Supplying additional compiler flags |
|
----------------------------------- |
|
|
|
Additional compiler flags can be supplied by setting the ``OPT``, |
|
``FOPT`` (for Fortran), and ``CC`` environment variables. |
|
|
|
|
|
Building with ATLAS support |
|
--------------------------- |
|
|
|
Ubuntu 8.10 (Intrepid) and 9.04 (Jaunty) |
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
|
|
You can install the necessary packages for optimized ATLAS with this command:: |
|
|
|
sudo apt-get install libatlas-base-dev |
|
|
|
If you have a recent CPU with SIMD suppport (SSE, SSE2, etc...), you should |
|
also install the corresponding package for optimal performances. For example, |
|
for SSE2:: |
|
|
|
sudo apt-get install libatlas3gf-sse2 |
|
|
|
This package is not available on amd64 platforms. |
|
|
|
*NOTE*: Ubuntu changed its default fortran compiler from g77 in Hardy to |
|
gfortran in Intrepid. If you are building ATLAS from source and are upgrading |
|
from Hardy to Intrepid or later versions, you should rebuild everything from |
|
scratch, including lapack. |
|
|
|
Ubuntu 8.04 and lower |
|
~~~~~~~~~~~~~~~~~~~~~ |
|
|
|
You can install the necessary packages for optimized ATLAS with this command:: |
|
|
|
sudo apt-get install atlas3-base-dev |
|
|
|
If you have a recent CPU with SIMD suppport (SSE, SSE2, etc...), you should |
|
also install the corresponding package for optimal performances. For example, |
|
for SSE2:: |
|
|
|
sudo apt-get install atlas3-sse2 |
|
|