Python Ubuntu Oneiric上的scikits.audiolab-导入错误:没有名为_sndfile的模块
好的,我想用Python做一些基本的信号处理,找到了这个很棒的库,名为Python Ubuntu Oneiric上的scikits.audiolab-导入错误:没有名为_sndfile的模块,python,Python,好的,我想用Python做一些基本的信号处理,找到了这个很棒的库,名为scikits.audiolab 任何地方都找不到PPA。哦,好吧。我想我可以简单地把它安装到我的Ubuntu Oneiric服务器上 sudo aptitude install libsndfile-dev 然后 sudo easy_install scikits.audiolab 然而,这一点失败了 error: sndfile (http://www.mega-nerd.com/libsndfile/) librar
scikits.audiolab
任何地方都找不到PPA。哦,好吧。我想我可以简单地把它安装到我的Ubuntu Oneiric服务器上
sudo aptitude install libsndfile-dev
然后
sudo easy_install scikits.audiolab
然而,这一点失败了
error: sndfile (http://www.mega-nerd.com/libsndfile/) library not found.
Directories to search for the libraries can be specified in the
site.cfg file, in section [sndfile].
Wtf?好的,查询了libsndfile1 dev
文件列表:
japsu@helios ~ $ apt-file list libsndfile1-dev
libsndfile1-dev: /usr/include/sndfile.h
libsndfile1-dev: /usr/include/sndfile.hh
libsndfile1-dev: /usr/lib/x86_64-linux-gnu/libsndfile.a
libsndfile1-dev: /usr/lib/x86_64-linux-gnu/libsndfile.la
libsndfile1-dev: /usr/lib/x86_64-linux-gnu/libsndfile.so
libsndfile1-dev: /usr/lib/x86_64-linux-gnu/pkgconfig/sndfile.pc
[...]
奇怪,图书馆进入非标准图书馆目录?愚蠢的包装工
哦,好吧。下载了Scikets.audiolab的源代码,编写了一个站点.cfg
如下:
[sndfile]
include_dirs = /usr/include
library_dirs = /usr/lib/x86_64-linux-gnu/
sndfile_libs = sndfile
现在,python setup.py build
和sudo setup.py安装
成功完成
接下来,启动Python shell,尝试从Scikets.audiolab导入sndfile:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "scikits/audiolab/__init__.py", line 25, in <module>
from pysndfile import formatinfo, sndfile
File "scikits/audiolab/pysndfile/__init__.py", line 1, in <module>
from _sndfile import Sndfile, Format, available_file_formats, \
ImportError: No module named _sndfile
和\u sndfile.so
可在/usr/local/lib/python2.7/dist packages/scikits.audiolab-0.11.0-py2.7-linux-x86\u 64.egg/scikits/audiolab/pysndfile/\u sndfile.so上找到
所以我的问题是,
世跆联在进行什么?为什么python找不到\u sndfile.so
2011年是否有人在2011 Linux发行版上成功使用了scikits.audiolab?你是怎么做到的
有没有好的替代库可以将大量(比如10GB/8小时)WAV文件逐块读取到NumPy中
编辑:我刚刚意识到情况并非如此,因为pysndfile似乎是捆绑的。。。我不应该在早上第一件事就回答这些问题;)
回答1:Sndfile是一个c库,您很可能需要为它安装python包装器:有人建议我检查ldd\u Sndfile.so
。就这么做了
linux-vdso.so.1 => (0x00007fffd3dea000)
libsndfile.so.1 => /usr/lib/x86_64-linux-gnu/libsndfile.so.1 (0x00007f2bfbb5b000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f2bfb93e000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2bfb59e000)
libFLAC.so.8 => /usr/lib/x86_64-linux-gnu/libFLAC.so.8 (0x00007f2bfb354000)
libvorbisenc.so.2 => /usr/lib/x86_64-linux-gnu/libvorbisenc.so.2 (0x00007f2bfae85000)
libvorbis.so.0 => /usr/lib/x86_64-linux-gnu/libvorbis.so.0 (0x00007f2bfac58000)
libogg.so.0 => /usr/lib/x86_64-linux-gnu/libogg.so.0 (0x00007f2bfaa51000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f2bfa7cd000)
有趣!还引用了一些文件格式库,这些库我可能还没有安装
sudo aptitude是否安装了flac vorbis工具
In [1]: from scikits.audiolab import sndfile
/usr/local/lib/python2.7/dist-packages/scikits.audiolab-0.11.0-py2.7-linux-x86_6
4.egg/scikits/audiolab/soundio/play.py:48: UserWarning: Could not import alsa ba
ckend; most probably, you did not have alsa headers when building audiolab
warnings.warn("Could not import alsa backend; most probably, "
我现在可能可以忽略关于缺少ALSA支持的警告,因为它可能用于本地录制和播放,而且这是一个服务器
如果libFLAC
、libvorbis
和libvorbisenc
的缺乏在scikits.audiolab
的构建脚本中触发了构建时故障,那么这会容易得多。。。毕竟,最后的错误消息没有提到这些库。如果您不想看到关于alsa头的警告,只需安装库即可
sudo apt get安装libasound2 dev
这对我来说很管用
In [1]: from scikits.audiolab import sndfile
/usr/local/lib/python2.7/dist-packages/scikits.audiolab-0.11.0-py2.7-linux-x86_6
4.egg/scikits/audiolab/soundio/play.py:48: UserWarning: Could not import alsa ba
ckend; most probably, you did not have alsa headers when building audiolab
warnings.warn("Could not import alsa backend; most probably, "