在Ubuntu上通过pip安装pysox时报错无法找到sox.h

4 投票
2 回答
6920 浏览
提问于 2025-04-17 15:07

我在Ubuntu 12.04.2 LTS上尝试用pip安装pysox这个包(用easy_install也会出现同样的错误)。

$ 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,而库包都是以libsox-fmt开头的(而且关于这一点的文档很少)。

无论如何,这里是你在Debian机器上需要的所有东西,以便让pip/easy_install正确管理你的SoX模块:

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

撰写回答