在CentOs 5.5 for Python-2.7.1上构建libsvm-3.0的问题

时间:2011-02-24 21:17:20

标签: python centos libsvm

尝试在CentOs 5.5上安装libsvm-3.0以进行替代python构建(python-2.7.1而不是默认2.4)。这个python安装在/opt/python2.7中。我下载了源文件并在主目录和python子目录中运行了MAKE。然后我将所有内容复制到/opt/python2.7/lib/python2.7/site-packages/libsvm

当我在Macintosh 10.6.6上执行此操作时,我不得不执行一些不在说明中的额外步骤。它们在我的博客here中有所描述。关键步骤是将以下内容添加到svm.py

 import os.path
_PATH = os.path.join( *os.path.split(__file__)[:-1] )

并修改此第一个声明

if find_library('svm'):
   libsvm = CDLL(find_library('svm'))
elif find_library('libsvm'):
   libsvm = CDLL(find_library('libsvm'))
else:
   if sys.platform == 'win32':
      libsvm = CDLL('../windows/libsvm.dll')
   else:
      libsvm = CDLL('../libsvm.so.2')

看起来像这样:

if find_library('svm'):
  libsvm = CDLL(find_library('svm'))
elif find_library('libsvm'):
  libsvm = CDLL(find_library('libsvm'))
else:
  if sys.platform == 'win32':
    libsvm = CDLL(os.path.join(_PATH,'windows','libsvm.dll'))
  else:
    libsvm = CDLL(os.path.join(_PATH,'libsvm.so.2'))

但是,这些配置都不适用于此Linux版本。我绝对不是一个Linux人,所以我不知道可能出现什么问题。

在解释器中工作试图解决这个问题,我注意到cytpes.util.find_library('svm')或ctypes.util.find_library(“libsvm.so.2”)返回空值,所以它肯定会不知道.so在哪里。

我能够通过设置libsvm = CDLL(os.path.abspath(“libsvm.so.2”))手动强制解释器中的位置。然后我只能在那个会话期间导入svm。

非常感谢任何帮助。

标记

1 个答案:

答案 0 :(得分:0)

好的,问题解决了。愚蠢的我。而不是添加__init__.py  到libsvm目录,我添加了init.py.一旦我改变了它,它就有效了。仍然需要添加__init__.py,这应该包含在libsvm-3.0安装说明中。