2011-02-24 73 views
0

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

当我在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。

任何帮助,非常感谢。

马克

回答

0

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