在Ubuntu上通过pip install安装pysox时,无法解决sox.h问题。

4

我正在尝试使用pip(easy_install抛出完全相同的错误)在Ubuntu 12.04.2 LTS上安装pysox包。

$ pip install pysox
[...]
building 'pysox.sox' extension
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c pysox/sox.c -o build/temp.linux-x86_64-2.7/pysox/sox.o

pysox/sox.c:227:17: fatal error: sox.h: No such file or directory

我的系统已安装:

$ dpkg --list | grep sox
ii  libsox-fmt-all      14.3.2-3    All SoX format libraries
ii  libsox-fmt-alsa     14.3.2-3    SoX alsa format I/O library
ii  libsox-fmt-ao       14.3.2-3    SoX Libao format I/O library
ii  libsox-fmt-base     14.3.2-3    Minimal set of SoX format libraries
ii  libsox-fmt-ffmpeg   14.3.2-3    SoX ffmpeg format library
ii  libsox-fmt-mp3      14.3.2-3    SoX MP3 format library
ii  libsox-fmt-oss      14.3.2-3    SoX OSS format I/O library
ii  libsox-fmt-pulse    14.3.2-3    SoX PulseAudio format I/O library
ii  libsox1b            14.3.2-3    SoX library of audio effects and processing
ii  sox                 14.3.2-3    Swiss army knife of sound processing

需要安装libasound2-pluginslibasound2-python包。我甚至拉取了SoX源代码,并将~/sox/src/sox.h添加到我的PATH中,但仍然没有用。虽然我的二进制文件都看起来没问题,但是find找不到sox.h文件。pysox源代码中似乎也没有包含sox.h。

pysox的官方页面说明:“具体来说,您需要在包含路径中拥有sox.h,在链接路径中拥有libsox.so和libsox.a。”

除了从源代码编译所有内容外,我不知道如何从二进制包中获得这些文件。是否不可能使用普通的软件包管理器进行此安装,我需要自己编译、链接和包含所有内容吗?

如何在Debian/Ubuntu上正确安装pysox?

2个回答

7

如果有帮助的话,我也遇到了同样的问题,但使用以下方式出现错误:

sudo apt-get install libasound2-plugins libasound2-python libsox-fmt-all libsox-dev sox

我成功让它工作了,方法是放弃对libasound的请求,因为似乎不再可用。

以下是适用于我的解决方案......我认为过程如下:

pip3 install sox

sudo apt-get install sox libsox-fmt-all 

sudo apt-get install sox libsox-dev 

pip3 install pysox

我只用了大约11个小时才解决了这个问题。


6

好的,这是可以预料到的:忘记安装SoX的开发包,即libsox-dev。起初对我来说并不明显,因为标准包是sox,而lib包都以libsox-fmt为前缀(并且在这方面几乎没有文档)。

无论如何,这是在Debian机器上获取适当文件并让pip/easy_install正确管理您的模块所需的所有内容:

sudo apt-get install libasound2-plugins libasound2-python libsox-fmt-all libsox-dev sox

1
在 Debian 和 Ubuntu 上,头文件始终包含在 -dev 包中,因此您不需要针对特定软件包的文档。 - LtWorf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接