在CentOs 5.5上为Python-2.7.1构建libsvm-3.0时出现问题

在CentOs 5.5上为Python-2.7.1构建libsvm-3.0时出现问题,python,centos,libsvm,Python,Centos,Libsvm,正在尝试在CentOs 5.5上为替代python构建(python-2.7.1而不是默认的2.4)安装libsvm-3.0。此python安装在/opt/python2.7中。我下载了源文件,并在主目录和python子目录中运行MAKE。然后我将所有内容复制到/opt/python2.7/lib/python2.7/site-packages/libsvm 当我在Macintosh10.6.6上这样做时,我不得不做一些说明中没有的额外步骤。他们在我的博客上有描述。关键步骤是将以下内容添加到sv

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

当我在Macintosh10.6.6上这样做时,我不得不做一些说明中没有的额外步骤。他们在我的博客上有描述。关键步骤是将以下内容添加到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

非常感谢您的帮助


马克

好的,问题解决了。愚蠢的我。而不是添加
\uuuu init\uuuuu.py
在libsvm目录中,我添加了init.py。一旦我改变了这一点,它就会起作用。尽管如此,libsvm-3.0安装说明IMHO中仍应包含添加
\uuuu init\uuuuu.py
的需要