如何为python安装numpy和scipy?


36

我很累尝试为phyton 2.7.5安装numpy和scipy,我需要此版本的python,因为我的最终目标是安装类(http://class-code.net/)和montepython(http:// montepython .net /)。

(我有Ubuntu 12.04)

当我尝试导入numpy或scipy时,每次都会出现以下错误:

$ 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

为了摆脱错误,我尝试过:

  1. 满足python要求: $ sudo apt-get install build-essential python-dev gfortran
  2. 使用apt-get安装: $ sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
  3. 用pip安装要求: $ sudo pip install requests
  4. ...并尝试使用pip安装:$ sudo pip install numpy$ sudo pip install scipy
  5. 我已经有环境var:export PYTHONPATH=/usr/lib/python2.7/dist-packages:${PYTHONPATH} 上次安装numpy和scipy(在较早的ubuntu版本10.x中)对我有用。
  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" 然后使用(4)中的pip安装它们

    但是现在看来python-distribute.org的服务器已关闭。我收到以下错误:

    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. 我还尝试从Synaptic和Ubuntu软件中心安装numpy和scipy

我在每次尝试中都失败了,现在我不知道该怎么办。我想念什么吗?如何为python正确安装numpy和scipy?任何想法将不胜感激。

当我做

echo $PYTHONPATH

我懂了

/usr/lib/python2.7/dist-packages

可以将输出结果添加echo $PYTHONPATH到您的问题中。谢谢您:-)
MadMike

也许有帮助:effbot.org/pyfaq/…–
Rmano

好吧,@ MadMike我确实有一个问题,$PYTHONPATH我已经删除了中的定义.bashrc,但是我仍然在其他地方有一个定义,因为我仍然有可以获取的env var $PYTHONPATH:(bash: /usr/lib/python2.7/dist-packages:: No such file or directory双冒号)...
Jorge

我已经通过写.bashrc文件来纠正了export PYTHONPATH=/usr/lib/python2.7/dist-packages...我做了UCS4 build / UCS2 build作为@Rmano sugest,但是在两种情况下我仍然遇到相同的问题...:\
Jorge

1
学分应该去@Rmano。numpy和scipy的越野车版本存在问题。有了升级版,一切都会按预期进行。
MadMike 2013年

Answers:


41

好吧,让我们按照安装指南进行操作

  1. 它说您需要python 2.7(您已经拥有):

    $ python --version
    Python 2.7.4
  2. 然后它说您也需要numpy软件包,版本> = 1.4.1:

    apt-cache策略python-numpy
    python-numpy:
    已安装:(无)
    候选者:1:1.7.1.1-1ubuntu1
    版本表:
     1:1.7.1-1ubuntu1 0
        500个http://archive.ubuntu.com/ubuntu/ raring / main amd64软件包

    如您所见,我有可用的numpy版本1.7.1,所以让我们继续安装它:

    sudo apt-get install python-numpy
  3. 现在它说我们需要cython,让我们检查该软件包是否可用:

    apt-cache策略cython
    cython:
    已安装:(无)
    候选人:0.17.4-0ubuntu1
    版本表:
     0.17.4-0ubuntu1 0
        500个http://archive.ubuntu.com/ubuntu/ raring / main amd64软件包

    我们有它,我们安装它:

    sudo apt-get install cython

    请注意,还有其他一些依赖包也正在安装中。

  4. 奇怪的是,我们也需要scipy模块:

    sudo apt-get install python-scipy
  5. 测试。在终端中打开python并输入以下内容:

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

    以上,必须没有错误。如果出现问题,请重新阅读指南,您忘记/略过了一步。

  6. 从他们的页面下载CLASS源,转到终端中的目录,然后解压缩并进行以下操作:

    cd where / the / tar /是
    tar zxf class_v2.0.2.tar.gz
    cd class_v2.0.2
    使

    在这里,我们将等待直到完成。完成此操作后,我们进入python目录并启动魔术。无需从目录移动,请运行以下命令:

    光盘python
    python setup.py构建
    python setup.py install --user

    现在,我们在用户目录中安装了CLASS。我们应该测试一下!

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

    一切都很好,直到这里。

  7. 现在是真实的时间,在您的代码目录中下载monthypython tarball:

    光盘〜
    mkdir代码
    CD代码
    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

    在安装说明中,有一些注释与这种特殊情况(新安装)无关,但在更新montepython时可能很重要。

  8. 此更改很重要。您还记得安装CLASS的位置吗?现在,您应该告诉Monte Python在哪里。就我而言/home/braiam/src/class_v2.0.2/class,您的可能有所不同。您可以使用find它来查找:

    find ~ -name class -print

    好了,现在我可以default.conf使用任何您喜欢的文件修改文件(我将使用nano)并修改root路径,因此完整的文件如下所示:

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

    保存文件并退出。

  9. 测试montepython!如果一切正常,则应该可以code/MontePython.py --help在montepythong目录中运行,并且所有内容都应运行:

    〜/ src / montepython $代码/MontePython.py-帮助
    用法:MontePython.py [-h] [-N步数] [-o输出文件夹]
                      [-p输入参数文件] [-c输入cov矩阵]
                      [-j跳跃方法] [-f跳跃因子]
                      [-conf配置文件] [-chain_number链号]
                      [-r从链中重新启动] [-bf从最佳文件中重新启动]
                      [-info [所需文件的计算信息[所需文件的计算信息...]]]
                      [-bins所需的箱数,默认为20] [-no_mean]
                      [-comp比较文件夹]
                      [用于自定义需求的额外绘图文件] [-noplot] [-全部]
                      [-ext更改输出文件的扩展名]
                      [-fontsize所需的字体大小,默认为15]
                      [-ticksize所需的ticksize,默认为13]
    
    Monte Python,Python中的蒙特卡洛代码

    可选参数: -h,--help显示此帮助消息并退出 -N步数 -o输出文件夹 -p输入参数文件 -c输入cov矩阵 -j跳跃法 -f跳跃因子 -conf配置文件 -chain_number链号 -r从链重启 -bf从最合适的文件重新启动 -info [计算所需文件的信息[计算所需文件的信息...]] -bins所需的箱数,默认为20 -没有意思 -comp比较文件夹 -自定义需要的额外绘图文件 -无图 -所有 -ext更改输出文件的扩展名 -fontsize所需的字体大小,默认为15 -ticksize所需的ticksize,默认值为13

有了这个,您已经安装了montepython并准备好开始了!


感谢您的回答。当然,作为第一步,我遵循了montepython给出的安装指南,不幸的是,由于python无法找到scipy / numpy,因此我陷入了您的步骤(5)。这就是为什么我尝试其他步骤。
豪尔赫

1
@JorgeMastache您应该清理您的库,也许您在某个地方搞砸了,而python正在尝试使用它。使用新用户(如果您没有使用过sudo)或执行操作sudo make uninstall,但是程序将被卸载。
Braiam

我是第一次在新的ubunutu(新计算机)中安装。我只想警告其他用户,请务必小心卸载与python相关的软件包,因为它可能会与您的ubuntu-desktop或数学库混淆。我已经设法通过重新配置/ make python并使用我的步骤(1)和(6)来安装numpy和scipy,从而安装了montepython,谢谢您的回答。
豪尔赫

1
@JorgeMastache很难维持,但是可以。
Braiam
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.