2012-09-24 4 views
0

내 Mac (OS-X 10.6.8)에 libsvm을 설치하려고합니다. Libsvm은 C++에서 잘 설치됩니다 (svm-train, svm-predict 바이너리를 사용할 수 있습니다). 지시에 따라 나는 libsvm-3.12/파이썬/폴더에 메이크업을 입력하고있어 출력Libsvm python bindings : mach-o이지만 잘못된 아키텍처

<i> 
make -C .. lib 
if [ "Darwin" = "Darwin" ]; then \ 
     SHARED_LIB_FLAG="-dynamiclib -W1,-install_name,libsvm.so.2"; \ 
    else \ 
     SHARED_LIB_FLAG="-shared -W1,-soname,libsvm.so.2"; \ 
    fi; \ 
    g++ ${SHARED_LIB_FLAG} svm.o -o libsvm.so.2 
</i> 

다음하지만 통해 파이썬에서 사용하려고 할 때 오류를

<i> 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
    File "svmutil.py", line 3, in <module> 
    from svm import * 
    File "svm.py", line 19, in <module> 
    '../libsvm.so.2')) 
    File "/Library/Frameworks/Python.framework/Versions/7.1/lib/python2.7/ctypes/__init__.py", line 353, in __init__ 
    self._handle = _dlopen(self._name, mode) 
OSError: dlopen(../libsvm.so.2, 6): no suitable image found. Did find: 
    ../libsvm.so.2: mach-o, but wrong architecture 
</i> 

I에 따라 얻을 "수입 svmutil" 이 오류를 해결하는 방법을 모른다. 나는 g64 용 -m64 및 -arch x86_64 플래그로 컴파일을 시도했지만 (libsvm의 "Make"프로세스 중에)이 오류가 계속 발생합니다. 누군가이 문제를 해결하는 방법을 알려주실 수 있습니까?

+0

파이썬 32 비트 또는 64 비트가 있습니까? 귀하의 회신에 감사드립니다. – nneonneo

답변

1

것은 유니버설 바이너리로 libsvm을 구축하십시오 :

make CFLAGS='-arch i386 -arch x86_64' CXXFLAGS='-arch i386 -arch x86_64' LDFLAGS='-arch i386 -arch x86_64' 

다른 방법으로, 파이썬의 적절한 버전 (파이썬 인터프리터의 배너를 확인)을 실행하고 있는지 확인합니다.

+1

. 문제가 무엇인지 알아 냈습니다. 내 기본 파이썬은 32 비트로 바뀌 었습니다. (필자는 파이썬의 버전을 32 비트로 바꾼 반면에 enthought의 scipy/numpy 패키지를 설치했습니다). /usr/bin/python2.6 -c "import svmutil"을 시도했을 때 완벽하게 작동했습니다 (/usr/bin/python2.6은 64 비트 파이썬 임). –

+0

당신의 추측이 맞았습니다. 그것은 파이썬 32 비트 대 파이썬 64 비트 문제였습니다. –