在ubuntu上导入python中的sidekit时出错

问题描述 投票:1回答:2

我正在尝试使用sidekit工具包进行说话人识别,我已经为Ubuntu安装了libsvm,我正在使用anaconda 3.5。当我尝试导入sidekit时,我得到以下导入错误

>>> import sidekit
>>> import theano
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/shivam/anaconda3/lib/python3.5/site-packages/sidekit/__init__.py", 
line 141, in <module>
from sidekit.libsvm import *
File "/home/shivam/anaconda3/lib/python3.5/site-packages/sidekit/libsvm/__init__.py", 
line 37, in <module>
from sidekit.libsvm.svm import *
File "/home/shivam/anaconda3/lib/python3.5/site-packages/sidekit/libsvm/svm.py", 
line 324, in <module>
fillprototype(libsvm.svm_get_sv_indices, None, [POINTER(svm_model), POINTER(c_int)])
File "/home/shivam/anaconda3/lib/python3.5/ctypes/__init__.py", line 360, in __getattr__
func = self.__getitem__(name)
File "/home/shivam/anaconda3/lib/python3.5/ctypes/__init__.py", line 365, in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
AttributeError: /usr/lib/libsvm.so.3: undefined symbol: svm_get_sv_indices
python ubuntu libsvm sidekit
2个回答
1
投票

几个月前我安装Sidekit时出现了同样的问题。

1:如果您想将Sidekit用于不涉及SVM的系统(gmm-ubm,i-vectors等),那么您可以通过编辑__init__.py来不导入libsvm来避免此问题。在您的情况下,它位于:/home/shivam/anaconda3/lib/python3.5/site-packages/sidekit/__init__.py。在第140行(libsvm_loaded = False正上方)添加if libsvm_loaded:,并且不会导入libsvm。

2:如果你想能够制作基于SVM的系统(例如在示例脚本rsr2015_svm_gmm.py中),Sidekit documentation告诉你(在libsvm安装之后)将libsvm.so.2复制到.../python3.5/site-packages/sidekit/libsvm/

如果import sidekit仍然给出相同的错误,请检查.../python3.5/site-packages/sidekit/__init__.py的第125行,并确保它说libsvm = CDLL(os.path.join(dirname, 'libsvm.so.2'))

请注意,如果您要更新Sidekit,将替换__init__.py


2
投票

尝试导入sidekit时,我也遇到了同样的错误。我尝试安装我能找到的每个libsvm包(包括Python和apt-get),但我能解决这个错误的唯一方法是从源代码下载并编译libsvm。它没有它听起来那么糟糕 - 它似乎是一个很小的库 - 只需要5秒就可以编译。

假设你安装了git(apt-get install git-core),我使用的总命令集是:

cd ~/ && \
git clone https://github.com/cjlin1/libsvm.git && \
cd libsvm && \
make && \
cd python && \
make && \
cp ~/libsvm/libsvm.so.2 /usr/local/lib/python3.5/dist-packages/sidekit/libsvm/ && \
rm -rf ~/libsvm

注意:我意识到你的错误提到了libsvm.so.3 - 我也这样做了,但是使用libsvm.so.2对我有用......所以这似乎是唯一包含svm_get_sv_indices的文件!

© www.soinside.com 2019 - 2024. All rights reserved.