Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Libsvm-python绑定:mach-o,但架构错误_Python_Macos_Svm_Libsvm_Mach O - Fatal编程技术网

Libsvm-python绑定:mach-o,但架构错误

Libsvm-python绑定:mach-o,但架构错误,python,macos,svm,libsvm,mach-o,Python,Macos,Svm,Libsvm,Mach O,我正试图在我的mac(OS-X 10.6.8)上安装libsvm。LIbVM为C++安装好(我可以使用SVM训练,SVM预测二进制文件就好了)。按照说明,我在libsvm-3.12/python/文件夹中键入make,并得到以下输出 <i> make -C .. lib if [ "Darwin" = "Darwin" ]; then \ SHARED_LIB_FLAG="-dynamiclib -W1,-install_name,libsvm.so.2"; \

我正试图在我的mac(OS-X 10.6.8)上安装libsvm。LIbVM为C++安装好(我可以使用SVM训练,SVM预测二进制文件就好了)。按照说明,我在libsvm-3.12/python/文件夹中键入make,并得到以下输出

<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>

make-C。。解放党
如果[“达尔文”=“达尔文”];然后\
SHARED_LIB_FLAG=“-dynamiclib-W1,-install_name,libsvm.so.2”\
否则\
SHARED_LIB_FLAG=“-SHARED-W1,-soname,libsvm.so.2”\
fi\
g++${SHARED_LIB_FLAG}svm.o-o libsvm.so.2
但当我尝试通过“importsvmutil”在python中使用它时,我得到了以下错误

<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>

回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“svmutil.py”,第3行,在
从svm导入*
文件“svm.py”,第19行,在
“../libsvm.so.2”)
文件“/Library/Frameworks/Python.framework/Versions/7.1/lib/python2.7/ctypes/_init__.py”,第353行,在_init中__
self.\u handle=\u dlopen(self.\u名称,模式)
OSError:dlopen(../libsvm.so.2,6):未找到合适的映像。确实发现:
../libsvm.so.2:mach-o,但架构错误

我不知道如何避开这个错误。我也尝试过为g++使用-m64和-arch x86_64标志进行编译(在libsvm的“Make”过程中),但仍然会出现此错误。有人能告诉我如何避开这个问题吗?

尝试将
libsvm
构建为通用二进制文件:

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

或者,确保您运行的是合适版本的Python(请查看Python解释器的标题)。

您的Python是32位还是64位?谢谢您的回复。我刚弄明白问题是什么。我的默认python被切换到32位(我安装了Enthough的scipy/numpy包,在此期间它将我的python版本更改为32位)。当我尝试/usr/bin/python2.6-c“import svmutil”时,它工作得非常好(/usr/bin/python2.6是64位python)。这是python 32位对python 64位的问题。