How to install numpy and scipy for python?
I am tired to try to install numpy and scipy for phyton 2.7.5, I need this version of python because my final goal it's to install class (http://class-code.net/) and montepython (http://montepython.net/).
(I have ubuntu 12.04)
When I tried to import numpy or scipy I get the following error everytime:
$ phyton2.7
>>> import numpy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/numpy/__init__.py", line 137, in <module>
import add_newdocs
File "/usr/lib/python2.7/dist-packages/numpy/add_newdocs.py", line 9, in <module>
from numpy.lib import add_newdoc
File "/usr/lib/python2.7/dist-packages/numpy/lib/__init__.py", line 4, in <module>
from type_check import *
File "/usr/lib/python2.7/dist-packages/numpy/lib/type_check.py", line 8, in <module>
import numpy.core.numeric as _nx
File "/usr/lib/python2.7/dist-packages/numpy/core/__init__.py", line 5, in <module>
import multiarray
ImportError: /usr/lib/python2.7/dist-packages/numpy/core/multiarray.so: undefined symbol: PyUnicodeUCS4_AsUnicodeEscapeString
>> import scipy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/scipy/__init__.py", line 78, in <module>
from numpy import show_config as show_numpy_config
File "/usr/lib/python2.7/dist-packages/numpy/__init__.py", line 137, in <module>
import add_newdocs
File "/usr/lib/python2.7/dist-packages/numpy/add_newdocs.py", line 9, in <module>
from numpy.lib import add_newdoc
File "/usr/lib/python2.7/dist-packages/numpy/lib/__init__.py", line 4, in <module>
from type_check import *
File "/usr/lib/python2.7/dist-packages/numpy/lib/type_check.py", line 8, in <module>
import numpy.core.numeric as _nx
File "/usr/lib/python2.7/dist-packages/numpy/core/__init__.py", line 5, in <module>
import multiarray
ImportError: /usr/lib/python2.7/dist-packages/numpy/core/multiarray.so: undefined symbol: PyUnicodeUCS4_AsUnicodeEscapeString
In order to get rid of the error I had tried:
- Satisfy python requirement:
$ sudo apt-get install build-essential python-dev gfortran
- Install with apt-get:
$ sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
- Install requirement with pip:
$ sudo pip install requests
- ... and tried to installing with pip:
$ sudo pip install numpy
and$ sudo pip install scipy
- I already have the environment var:
export PYTHONPATH=/usr/lib/python2.7/dist-packages:${PYTHONPATH}
The last time I installed numpy and scipy (in older ubuntu version 10.x) this worked for me. -
sudo sh -c "wget http://python-distribute.org/distribute_setup.py -O- | python"
sudo sh -c "wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py -O- | python"
and then install both of them with pip as in (4)But now it seems that the server of python-distribute.org is down. I got the following error:
http://python-distribute.org/distribute_setup.py Resolving python-distribute.org (python-distribute.org)... failed: Name or service not known. wget: unable to resolve host address `python-distribute.org'
I had also tried to install numpy and scipy from synaptic and Ubuntu software center
I had failed in each of this attempts and now I don't know what to do. Am I missing something? How can I get numpy and scipy correctly installed for python? Any idea will be appreciated.
when I do
echo $PYTHONPATH
I get
/usr/lib/python2.7/dist-packages
Solution 1:
Ok, lets follow the installation guide:
-
It says you need python 2.7 (which you already have):
$ python --version Python 2.7.4
-
Then it says that you need the numpy package too, version >= 1.4.1:
apt-cache policy python-numpy python-numpy: Installed: (none) Candidate: 1:1.7.1-1ubuntu1 Version table: 1:1.7.1-1ubuntu1 0 500 http://archive.ubuntu.com/ubuntu/ raring/main amd64 Packages
As you can see, I have available numpy version 1.7.1, so lets proceed to install it:
sudo apt-get install python-numpy
-
Now it says that we need cython, lets check if that package is availabe:
apt-cache policy cython cython: Installed: (none) Candidate: 0.17.4-0ubuntu1 Version table: 0.17.4-0ubuntu1 0 500 http://archive.ubuntu.com/ubuntu/ raring/main amd64 Packages
We have it, we install it:
sudo apt-get install cython
Please, do notice that there are other packages that are dependency that are being installed too.
-
Oddly enough, we also need the scipy module too:
sudo apt-get install python-scipy
-
Testing. Open python in a terminal and type the following:
$ python Python 2.7.4 (default, Sep 26 2013, 03:20:26) [GCC 4.7.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import numpy >>> import scipy >>> import cython >>> exit()
The above, has to be without errors. If something went wrong, go up and read the guide again, you forgot/skiped a step.
-
Downloading the CLASS sources from their page, go to the directory in the terminal, and untar it and make it:
cd where/the/tar/is tar zxf class_v2.0.2.tar.gz cd class_v2.0.2 make
Here we will wait until is complete. Once this is done, we go to the python directory and start the magic. Without moving from directories run this:
cd python python setup.py build python setup.py install --user
Now we have CLASS installed in our user directory. We should test it!
python Python 2.7.4 (default, Sep 26 2013, 03:20:26) [GCC 4.7.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from classy import Class >>> exit()
Everything is nice a cozzy until here.
-
Now the truth time, download monthypython tarball in your code directory:
cd ~ mkdir code cd code wget https://www.dropbox.com/s/l7mnhwsktp1m8b5/montepython_v1.2.5.tar.bz2?dl=1 -O montepython_v1.2.5.tar.bz2 tar jxf montepython_v1.2.5.tar.bz2
In the installation instructions are some notes that aren't relevant in this peculiar case (a new install) but it may be important when you update montepython.
-
This change is important. You remember where you installed CLASS? Now you should tell Monte Python where is that. In my case it is
/home/braiam/src/class_v2.0.2/class
, yours may be different. You can usefind
to look for it:find ~ -name class -print
Well, now I modify the
default.conf
file using whatever you like (I'll use nano) and modify theroot
path, so the complete file will looks like:# Fill in the relevant path to your personal distribution. # If you create a new file out of this one, please remember to call # MontePython.py with the option '-conf my.conf' # At minimum, this file should contain one line: # ** path['cosmo'] = path to the cosmological code you are using. Note, if you are # using a modified version of class, be sure that the path contains the word # class, otherwise the code might not recognise it. # If you want to use a data folder different from the one present in the folder # you are executing the code, please also add: # ** path['data'] = /path/to/the/other/data/ root = '/home/braiam/src/class_v2.0.2/' path['cosmo'] = root+'/class/'
Save the file and exit.
-
Test montepython! If everything was ok, you should be able to run
code/MontePython.py --help
in your montepythong directory and everything should run:~/src/montepython$ code/MontePython.py --help usage: MontePython.py [-h] [-N number of steps] [-o output folder] [-p input param file] [-c input cov matrix] [-j jumping method] [-f jumping factor] [-conf configuration file] [-chain_number chain number] [-r restart from chain] [-bf restart from best fit file] [-info [compute information of desired file [compute information of desired file ...]]] [-bins desired number of bins, default is 20] [-no_mean] [-comp comparison folder] [-extra plot file for custom needs] [-noplot] [-all] [-ext change extension for the output file] [-fontsize desired fontsize, default is 15] [-ticksize desired ticksize, default is 13] Monte Python, a Monte Carlo code in Python optional arguments: -h, --help show this help message and exit -N number of steps -o output folder -p input param file -c input cov matrix -j jumping method -f jumping factor -conf configuration file -chain_number chain number -r restart from chain -bf restart from best fit file -info [compute information of desired file [compute information of desired file ...]] -bins desired number of bins, default is 20 -no_mean -comp comparison folder -extra plot file for custom needs -noplot -all -ext change extension for the output file -fontsize desired fontsize, default is 15 -ticksize desired ticksize, default is 13
With this, you have montepython installed and ready to roll!