gpt4 book ai didi

python - Ubuntu Oneiric 上的 scikits.audiolab - ImportError : No module named _sndfile

转载 作者:太空狗 更新时间:2023-10-29 20:28:40 31 4
gpt4 key购买 nike

好的,所以我想用 Python 进行一些基本的信号处理,并找到了这个名为 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].

什么鬼?好的,查询了 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
[...]

奇怪,库进入非标准库目录?愚蠢的包装工。

好吧。下载了 scikits.audiolab 的源代码,写了一个 site.cfg 如下:

[sndfile]
include_dirs = /usr/include
library_dirs = /usr/lib/x86_64-linux-gnu/
sndfile_libs = sndfile

现在 python setup.py buildsudo setup.py install 成功完成。

接下来,启动 Python shell,尝试from scikits.audiolab import 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

但是:

>> sys.path
['',
'/usr/bin',
'/usr/lib/pymodules/python2.7',
'/usr/local/lib/python2.7/dist-packages/scikits.audiolab-0.11.0-py2.7-linux-x86_64.egg',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/IPython/Extensions',
u'/home/japsu/.ipython']

_sndfile.so 位于 /usr/local/lib/python2.7/dist-packages/scikits.audiolab-0.11.0-py2.7-linux-x86_64。 egg/scikits/audiolab/pysndfile/_sndfile.so.

所以,我的问题是,

  1. Wtf 是怎么回事?为什么 python 找不到 _sndfile.so
  2. 有没有人在 2011 年在 2011 Linux 发行版上成功使用过 scikits.audiolab?你是怎么做到的?
  3. 是否有任何好的替代库可以将巨大的(例如 10 GB/8 小时)WAV 文件逐 block 读取到 NumPy 中?

最佳答案

有人建议我检查 ldd _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 install flac vorbis-tools 瞧!

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 支持的警告,因为它可能用于本地录制和播放 - 无论如何这是一个服务器。

如果缺少 libFLAClibvorbislibvorbisenc 在构建 scikits.audiolab 的脚本...毕竟,最终的错误消息并未提及这些库。

关于python - Ubuntu Oneiric 上的 scikits.audiolab - ImportError : No module named _sndfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8461055/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com