Проблема сборки libsvm-3.0 на CentOs 5.5 для Python-2.7.1 - PullRequest
0 голосов
/ 25 февраля 2011

пытается установить libsvm-3.0 для альтернативной сборки python (python-2.7.1 вместо 2.4 по умолчанию) в CentOs 5.5. Этот питон установлен в /opt/python2.7. Я скачал исходные файлы и запустил MAKE в основном каталоге и в подкаталоге python. Затем я скопировал все в /opt/python2.7/lib/python2.7/site-packages/libsvm

Когда я сделал это на Macintosh 10.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 1016 *

Мне удалось вручную принудительно определить местоположение в интерпретаторе, установив libsvm = CDLL (os.path.abspath ("libsvm.so.2")). Тогда я мог импортировать SVM только во время этой сессии.

Любая помощь очень ценится.

Mark

1 Ответ

0 голосов
/ 25 февраля 2011

Хорошо, проблема решена. Глупый я. Вместо добавления __init__.py к директории libsvm я добавил init.py. Как только я изменил это, это работает. Тем не менее, необходимость добавления __init__.py должна быть включена в примечания по установке libsvm-3.0 IMHO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...