Linux(2.6.32-358.el6.x86_64)下离线安装cvxopt遇到的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiongchengluo1129/article/details/80415384

Linux服务器上安装cvxopt的安装包

  最近要在服务器上跑代码,需要安装cvxopt来解凸优化,一个很简单的一个工作,却弄了一天,特此记下遇到的坑。

一、下载cvxopt的安装包,上传到服务器上

下载安装包的地址如下:

1. https://pypi.org/project/cvxopt/#files。里面包含了各种平台下的安装包。(这是我试过的能涵盖最全的安装包的网址了,官网上的坑太多)
cvxopt安装包
2. 安装之前请检查一下自己Linux版本是i863(32位)还是x86_64(64位)
   对应的命令为    uname -a

Linux xdhpc03 2.6.32-358.el6.x86_64 #1 SMP Tue Jan 29 11:47:41 EST 2013 x86_64 x86_64 x86_64 GNU/Linux

3. python的版本是2.x还是3.x   对应的命令为    python –version

Python 2.7.13 :: Anaconda 4.3.1 (64-bit)

4. ,然后下载对应版本的安装包。我的服务器的系统是x86_64位,python的版本是2.7所以我选择版本如下(图中箭头1):
自己对应的版本号

注意上图的cp27mu(图中箭头1),和cp27m(图中箭头2)的区别:
https://pypi.Python.org/pypi下载时,cp27提供2种包的区别:

cp27m是ucs2
cp27mu是ucs4
UCS2认为每个字符占用2个字节,UCS4认为每个字节占用4个字符,都是UNICODE的编码形式。

  我这里试验了cp2m(图中箭头2)的安装包,提示该安装包的类型与平台不符,然后我从服务器上删除了这个安装包,然后下载了cp27mu(图中箭头1)的安装包,然后就安装成功了

5 、下面给出安装的命令:

[zhaopanpan@xdhpc03 cvxopt-1.1.8]$ cd 
[zhaopanpan@xdhpc03 ~]$ pip install cvxopt-1.2.0-cp27-cp27mu-manylinux1_x86_64.whl
Processing ./cvxopt-1.2.0-cp27-cp27mu-manylinux1_x86_64.whl
Installing collected packages: cvxopt
Successfully installed cvxopt-1.2.0

后记:

  我也尝试过用cvxopt官网给的cvxopt-master.zip安装,按照它官网上的安装教程一步一步的来,最后总会在安装的时候报错:

/usr/bin/ld: /usr/lib/liblapack.a(zsymv.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
/usr/lib/liblapack.a: could not read symbols: Bad value
collect2: ld returned 1 exit status

  最后发现是因为, google到结果说在编译命令中加入参数-fPIC就可以了,可是我makefile中明明有-fPIC啊,这个问题其实出在liblapack_python.a的编译上。原因在于lapack的编译工具bjam在编译lapack静态库时,没有使用-fPIC选项,使得编译出来的静态库没有重定位能力。这样在64位机器上lapack编译出来的静态库几乎全部不能用。并且bjam工具不提供定制编译参数的功能

解决方案:

  下载用lapack和python编译出来的静态库,替换lapack_python.a(在安装目录下,如/usr/local/lib)

参考网址:http://www.aiuxian.com/article/p-2042152.html

  但是我并没有采用这种安装方式和解决方案,因为学校的服务器上没有办法访问/usr/local/lib这个目录。也就没办法进行文件的修改和替换。所以这个方法适用于在服务器上拥有访问该目录的人员使用。

每次 遇到问题,然后逐步解决它,然后记下来,然后可以给别人讲明白,这种感觉真的很好呢。

猜你喜欢

转载自blog.csdn.net/xiongchengluo1129/article/details/80415384