This was very frustrating to solve and I eventually had to get my friend Kieran (thanks Kieran!) to help me. Basically the vanilla installation instructions that come with are insufficient (at least for me) to get a working module. Here are the steps that were required to get everything to work.
1. Run 'make' in the libsvm-3.0 directory
2. Run 'make' in the libsvm-3.0/python directory
In the libsvm-3.0 directory there now should be a .so2 file
3. Create a new directory in your site-packages directory (your pythonpath) called libsvm
4. Copy the .so2 file from libsvm-3.0 and the svm.py, svm.pyc, svmutil.py files from libsvm-3.0/python to site-packages/libsvm
There are a couple things that are missing so now we need to make them.
5. In site-packages/libsvm create a file called __init__.py. This is an empty file, but it is necessary to get the directory recognized as a python module.
6. Edit svm.py and add the following two lines after the other import statements at the top of the file:
import os.path
_PATH = os.path.join( *os.path.split(__file__)[:-1] )
7. At around line 7 you will see this statement
# For unix the prefix 'lib' is not considered.
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')
8. Change this to look like this:
# For unix the prefix 'lib' is not considered.
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'))
9. Once you save svm.py, you should be able to fire up a python interpreter and do 'from libsvm import svm'. If that works, and a dir(svm) shows you a ton of functions, then you are good to go.