最近要在系统上跑GSN(Yoshua Bengio, Li Yao, Guillaume Alain, Pascal Vincent. Generalized Denoising Auto-Encoders as Generative Models. NIPS, 2013. (PDF, BibTeX))的代码,配置运行环境的过程中要在Python中安装Theano模块,中间遇到了很多问题,最后终于解决,在此做个记录,给同行做参考。

1、安装Theano之前,需要安装python-devel、python-nose、python-setuptools等模块,按照官网说明安装即可

sudo yum install python-devel python-nose python-setuptools gcc gcc-gfortran gcc-c++ blas-devel lapack-devel atlas-devel
sudo easy_install pip
sudo pip install numpy==1.6.1
sudo pip install scipy==0.10.1
sudo pip install Theano

安装过程中还会遇到一些需要安装的模块,按照错误说明安装即可。

2、按照官网的说明测试安装好的模块是否正常
NumPy (~30s): python -c “import numpy; numpy.test()”
SciPy (~1m): python -c “import scipy; scipy.test()”
Theano (~30m): python -c “import theano; theano.test()”

前两个模块一般都没问题,主要是Theano 测试的时候,很容易出现如下两种情况:

a)error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
b)ImportError: cannot import name gof

我安装的时候,第一次运行:import theano,出现错误a,再运行一下:import theano,就开始出现错误b,之后不管运行多少次,都是错误b。

其实本质还在于问题a,解决了问题a,就可以正常引入Theano了。

3、解决:error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory

这个问题的出现主要是由于在编译Python的时候,没有正确指定共享库位置导致的,网上一般有两种解决办法,当然前提是找到libpython2.7.so.1.0真正所在的位置,不同的系统位置不一样,有的在/usr/local/,有的在/usr/local/lib/,当然运行命令:whereis libpython2.7.so.1.0,即可找到所在文件夹。下面介绍两种解决办法:

一、设定动态链接库的路径:vi /etc/ld.so.conf(需要root权限)

然后把libpython2.7.so.1.0所在路径加入进去,保存后,执行:/sbin/ldconfig -v(需要root权限),使其生效,即可解决问题。
我的ld.so.conf原内容为:include ld.so.conf.d/*.conf,我不太清楚如何将路径加入,不管加不加include,保存生效后都没用,我采用的是第二种解决方案。(后来发现可以:echo “/usr/local/lib” >> /etc/ld.so.conf,然后再执行:ldconfig)

二、重新编译python

1、进入python源码目录,删除python源码目录下Object目录下所有的 .o 文件。(此步骤不做应该也行,我最初直接删除了,所以不删除是否可以有待验证)

2、编译python源码(此处是关键):./configure –prefix=/usr/local/ –enable-shared CFLAGS=-fPIC
prefix为动态链接库的路径,按照系统的实际情况进行修改。另外如果直接粘贴代码不能运行,将上边的命令手动敲进去,就可以了。
接着依次运行:make、make install(需要root 权限)如果没有意外,此处会顺利编译完成。

3、再次import theano,应该会成功引入。问题解决。

后记:最初就采用的第二种解决方法,但是刚开始没意识到不同系统的libpython2.7.so.1.0所在路径不同,导致重新编译了好几遍都没解决问题。后来正确设置路径之后,问题就解决了。

参考链接:

python安装时 -fPIC问题的解决:http://taoo.iteye.com/blog/1826912

libpython2.7.so.1.0 cannot open的解决方法:http://www.360doc.com/content/12/0322/18/6938655_196712249.shtml

解决error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No su:http://blog.csdn.net/wanyanxgf/article/details/8021641

CentOS下编译安装Python2.7.6:http://blog.useasp.net/archive/2014/05/07/compile-and-install-python-2-dot-7-dot-6-on-centos.aspx

https://groups.google.com/forum/#!topic/theano-users/idznDsFkvtA

最后更新: 2019年04月19日 21:37

原始链接: http://andersjing.com/2015/01/20/2015-01-20-CentOS_Theano/

× 请打赏~
打赏二维码