2011-02-24 40 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安裝說明中。