Como instalar numpy e scipy para python?

36

Estou cansado de tentar instalar o numpy e o scipy para o phyton 2.7.5, eu preciso desta versão do python porque meu objetivo final é instalar a classe ( link ) e montepython ( link ).

(eu tenho o Ubuntu 12.04)

Quando tentei importar um numpy ou scipy, recebi o seguinte erro toda vez:

$ 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

Para me livrar do erro que tentei:

  1. Satisfaça o requisito do python: $ sudo apt-get install build-essential python-dev gfortran
  2. Instale com o apt-get: $ sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
  3. Instale o requisito com o pip: $ sudo pip install requests
  4. ... e tentou instalar com o pip: $ sudo pip install numpy e $ sudo pip install scipy
  5. Já tenho o ambiente var: export PYTHONPATH=/usr/lib/python2.7/dist-packages:${PYTHONPATH} A última vez que instalei numpy e scipy (no antigo ubuntu versão 10.x) isso funcionou para mim.
  6. 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" e depois instalar os dois com pip como em (4)

    Mas agora parece que o servidor do python-distribute.org está inativo. Eu recebi o seguinte erro:

    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'
    
  7. Eu também tentei instalar o numpy e o scipy do centro de software synaptic e Ubuntu

Eu falhei em cada uma dessas tentativas e agora não sei o que fazer. Estou esquecendo de algo? Como posso obter numpy e scipy corretamente instalado para python? Qualquer ideia será apreciada.

quando faço

echo $PYTHONPATH

Eu obtenho

/usr/lib/python2.7/dist-packages
    
por Jorge 15.10.2013 / 07:42

1 resposta

41

Ok, vamos seguir o guia de instalação :

  1. Ele diz que você precisa do python 2.7 (que você já tem):

    $ python --version
    Python 2.7.4
    
  2. Em seguida, ele diz que você também precisa do pacote numpy, 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

    Como você pode ver, eu tenho a versão 1.7.1 disponível, então vamos instalar:

    sudo apt-get install python-numpy
    
  3. Agora diz que precisamos de cython, vamos verificar se esse pacote está disponível:

    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

    Nós temos isso, nós o instalamos:

    sudo apt-get install cython
    

    Por favor, note que existem outros pacotes dependentes que também estão sendo instalados.

  4. Curiosamente, também precisamos do módulo scipy:

    sudo apt-get install python-scipy
    
  5. Teste . Abra o python em um terminal e digite o seguinte:

    $ 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()
    

    O acima, tem que estar sem erros. Se algo deu errado, suba e leia o guia novamente, você esqueceu / pulou um passo.

  6. Fazendo o download das fontes CLASS de sua página, vá para o diretório no terminal e descompacte e faça:

    cd where/the/tar/is
    tar zxf class_v2.0.2.tar.gz
    cd class_v2.0.2
    make

    Aqui vamos esperar até que esteja completo. Feito isso, vamos ao diretório python e iniciamos a mágica. Sem mover de diretórios, execute isto:

    cd python
    python setup.py build
    python setup.py install --user

    Agora temos CLASS instalado em nosso diretório de usuários. Nós devemos testá-lo!

    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()
    

    Tudo é bom até aqui.

  7. Agora, a hora da verdade, faça o download do tary do monthypython em seu diretório de código:

    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

    Nas instruções de instalação há algumas notas que não são relevantes em este caso peculiar (uma nova instalação), mas pode ser importante quando você atualiza o montepython.

  8. Essa mudança é importante. Você se lembra de onde você instalou CLASSE? Agora você deve dizer ao Monte Python onde é isso. No meu caso é /home/braiam/src/class_v2.0.2/class , o seu pode ser diferente. Você pode usar find para procurá-lo:

    find ~ -name class -print
    

    Bem, agora eu modifico o arquivo default.conf usando o que você quiser (eu usarei o nano) e modifico o caminho root , então o arquivo completo será parecido com:

    # 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/'
    

    Salve o arquivo e saia.

  9. Teste o montepython! Se estava tudo bem, você deve ser capaz de executar code/MontePython.py --help no seu diretório montepythong e tudo deve ser executado:

    ~/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

Com isso, você tem o montepython instalado e pronto para rodar!

    
por Braiam 16.10.2013 / 01:45