zoukankan      html  css  js  c++  java
  • centos6.4 下安装numpy、scipy、matplotlib

    各个安装包版本:

    scipy-0.11.0

    numpy-1.6.2

    nose-1.2.1

    lapack-3.4.2

    ##atlas-3.10.0 (http://pkgs.fedoraproject.org/repo/pkgs/atlas/)

    依赖关系:scipy的安装需要依赖于numpy、lapack、atlas(后两者都是线性代数工具包,不清楚的自行google之。。。),而numpy和sci的测试程序的运行又依赖于nose,因此,整个安装过程必须要按顺序执行的,否则是无法执行下去的。

    sudo yum -y install gcc gcc-c++ numpy python-devel scipy
    
    sudo pip install nose
    
    sudo pip install numpy

    主要是在安装scipy时问题多多:

    1. Blas(http://www.netlib.org /blas/) libraries not found.

    Directories to search for the libraries can be specified in the

    numpy/distutils/site.cfg file (section [blas])or by setting

    the BLAS environment variable.

    找不到blas

    解决: yum install blas-devel

    2.

    竟然不出现BLAS的错误了

    出现了LAPACK的错误

    解决:  yum install lapack-devel

    然后, cd scipy-0.13.3 && sudo python setup.py install

    顺利编译了

    之后也顺利安装了

    看网上说 安装numpy前要安装gcc-gfortran、blas-devel、lapack-devel

    没有遇到gcc-gfortran的错误,可能是之前机器上装了吧

    最后是 matplotlib安装....

    所需依赖numpy, libpng 1.2 (or later), `freetype` 1.4 (or later), `dateutil` 1.1 or later, `pyparsing`

    sudo -E /usr/local/bin/pip3 install python-dateutil
    sudo -E /usr/local/bin/pip3 install pyparsing
    
    wget http://download.savannah.gnu.org/releases/freetype/freetype-2.5.3.tar.gz
    
    wget https://downloads.sourceforge.net/project/matplotlib/matplotlib/matplotlib-1.3.1/matplotlib-1.3.1.tar.gz
    
    libpng-1.2.51.tar.gz
    
    按照附带的安装文件说明安装即可.
    

    编译安装是没什么问题

    可是问题在安装后,import也没问题

    可是就是show()方法图像出不来

    一直没反应

    一直对着setup.py目录下的INSTALL文件的require那一段检查软件的版本

    都没问题

    网上也说matplotlib的会自动检查后端环境

    CentOS下也已经有了Tkinter

    后来 用

    yum install *-tk* 将两个以-tk结尾的软件装上

    yum install *gtk2-* 将几个已gtk2开头的软件全装上

    重新编译安装一次matplotlib

    show()就可以出现图像来了

    可能那几个软件只要装某个就可以了,多装了一些

    不过总算是把numpy、scipy和matplotlib都搞好了

    附带:

    Linux 安装 cblas, lapack, lapacke:

    1.确保机器上安装了gfortran编译器,如果没有安装的话,可以使用sudo apt-get install gfortran

    2.下载blascblaslapack 源代码, 这些源码都可以在 http://www.netlib.org 上找到,下载并解压。这里提供我安装时的下载链接 http://www.netlib.org/blas/blas.tgz http://www.netlib.org/blas/blast-forum/cblas.tgz http://www.netlib.org/lapack/lapack-3.4.2.tgz,解压之后会有三个文件夹, BLASCBLASlapack-3.4.2

    3.这里就是具体的编译步骤

    1)编译blas, 进入BLAS文件夹,执行以下几条命令

    1
    2
    3
    gfortran -c  -O3 *.f  # 编译所有的 .f 文件,生成 .o文件
    ar rv libblas.a *.o  # 链接所有的 .o文件,生成 .a 文件
    su cp libblas.a /usr/local/lib  # 将库文件复制到系统库目录

    2)编译cblas, 进入CBLAS文件夹,首先根据你自己的计算机平台,将目录下某个 Makefile.XXX 复制为 Makefile.in , XXX表示计算机的平台,如果是Linux,那么就将Makefile.LINUX 复制为 Makefile.in,然后执行以下命令

    1
    2
    3
    cp ../BLAS/libblas.a  testing  # 将上一步编译成功的 libblas.a 复制到 CBLAS目录下的testing子目录
    make # 编译所有的目录
    sudo cp lib/cblas_LINUX.a /usr/local/lib/libcblas.a # 将库文件复制到系统库目录下

    3)编译 lapack以及lapacke,这一步比较麻烦,首先当然是进入lapack-3.4.2文件夹,然后根据平台的特点,将INSTALL目录下对应的make.inc.XXX 复制一份到 lapack-3.4.2目录下,并命名为make.inc, 这里我复制的是 INSTALL/make.inc.gfortran,因为我这里用的是gfortran编译器。

    修改lapack-3.4.2/Makefile, 因为lapack以来于blas库,所以需要做如下修改

    #lib: lapacklib tmglib

    lib: blaslib variants lapacklig tmglib

    然后执行以下命令:

    1
    2
    3
    4
    5
    6
    make # 编译所有的lapack文件
    cd lapacke # 进入lapacke 文件夹,这个文件夹包含lapack的C语言接口文件
    make # 编译lapacke
    cp include/*.h /usr/local/include #将lapacke的头文件复制到系统头文件目录
    cd .. #返回到 lapack-3.4.2 目录
    cp *.a /usr/local/lib # 将生成的所有库文件复制到系统库目录

    这里的头文件包括: lapacke.h, lapacke_config.h, lapacke_mangling.h, lapacke_mangling_with_flags.h lapacke_utils.h

    生成的库文件包括:liblapack.a, liblapacke.a, librefblas.a, libtmglib.a

    至此cblas和lapack就成功安装到你的电脑上了。

    测试:

    可以到 http://www.netlib.org/lapack/lapacke.html 找测试代码,这里lapacke的官方文档,比如如下代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #include <stdio.h>
    #include <lapacke.h>
     
    int main (int argc, const char * argv[])
    {
       double a[5*3] = {1,2,3,4,5,1,3,5,2,4,1,4,2,5,3};
       double b[5*2] = {-10,12,14,16,18,-3,14,12,16,16};
       lapack_int info,m,n,lda,ldb,nrhs;
       int i,j;
     
       m = 5;
       n = 3;
       nrhs = 2;
       lda = 5;
       ldb = 5;
     
       info = LAPACKE_dgels(LAPACK_COL_MAJOR,'N',m,n,nrhs,a,lda,b,ldb);
     
       for(i=0;i<n;i++)
       {
          for(j=0;j<nrhs;j++)
          {
             printf("%lf ",b[i+ldb*j]);
          }
          printf(" ");
       }
       return(info);
    }

    将上诉代码保存为test.c,编译时,别忘了使用gfortran,此外,还需要连接用到的库,编译上面的代码,应使用如下命令:

    1
    gfortran test.c -llapacke -llapack -lrefblas

    如果能正常编译,即表示安装成功。如果要了解这段代码的具体含义,可以到 http://www.netlib.org/lapack/lapacke.html 查看

  • 相关阅读:
    MySQL查询优化程序
    mysql主从:主键冲突问题
    Cacti 'graph_xport.php' SQL注入漏洞
    Nginx SPDY缓冲区溢出漏洞
    Zend Framework XML外部实体和安全绕过漏洞
    WordPress 3.8.1 /xmlrpc.php拒绝服务漏洞
    OpenSSH 'child_set_env()'函数安全绕过漏洞
    PHP "gdImageCreateFromXpm()"空指针间接引用漏洞
    Apache HTTP Server多个拒绝服务漏洞
    Samba 安全漏洞
  • 原文地址:https://www.cnblogs.com/luxiaorui/p/3931061.html
Copyright © 2011-2022 走看看