pyaudio安装过程中出现Error: failed building wheel for pyaudio(其实正常安装portaudio就能解决)

问题发生与解决过程

你好!相信很多朋友在初次安装pyaudio时都会遇到一个问题,那就是pyaudio依赖缺少的问题。如果你想了解一下遇到这个问题该如何解决的话, 可以仔细阅读这篇文章,了解一下pyudioy以及它的依赖库portaudio的基本知识。

发现问题:安装pyudio

我在第一次安装pyaudio时就遇到了以下问题:
使用命令:pip install pyaudio
编译过程中系统提示:fatal error:failed building wheel for pyaudio
继续观察报错信息:发现在/home/xxx/anaconda3/include/python3.7m 下缺少portaudio.h的提示

坦诚地讲,遇到这个问题时,我还不知道portaudio.h是什么,但是出于先后顺序考虑,我首先上google搜索系统提示的fatal error,在github的一个帖子中,我找到了问题解决方法,其中就有portaudio-dev库的安装。

附上链接:https://github.com/SlapBot/stephanie-va/issues/8

寻找解决问题的方法:定位依赖包

因为在github的那个帖子中,作者提到了非常多的依赖和软件,libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg libav-tools,非常累赘。

但是,为了避免遗漏,我决定先上google查找一下pyaudio的官方安装教程。
于是,我找到了这个网站:https://people.csail.mit.edu/hubert/pyaudio/。
翻到Debian/Ubuntu安装目录下,果然发现,下面注释着pip安装时要先安装portaudio library development package (portaudio19-dev) 和 the python development package (python-all-dev)

解决问题:安装portaudio19-dev

最后,我打开了Port Audio v19的官方网站,
附上链接:http://www.portaudio.com/。

在DOWNLOAD里找到了官方推荐的稳定版(在stable releases下有一个you probably want this!!标注的版本)

于是,我复制了该链接。
然后,我首先在本机根目录下创建了一个新的文件夹PYAUDIO,然后在命令行使用wget命令将文件下载至该文件夹,之后解压、编译安装(./configure --prefix=/home/xxx/PYAUDIO&&make&&make install)。


<从这以后开始思路跑偏了>


这之后在PORTAUDIO里出现了两个文件夹,include及lib。
include文件夹里就有唯一的portaudio.h文件。
于是,我使用ln命令建立了/home/xxx/PORTAUDIO/include/portaudio.h 到/home/xxx/anaconda3/include/python3.7m(在报错信息里提到的缺少portauudio.h的文件夹)的软链接。
cd进/home/xxx/anaconda3/include/python3.7m文件夹,会发现已经出现了名为portaudi.h@的一个软链接。

新问题的出现:这是我本次遇上的最后一个问题

重新运行安装指令:pip install pyaudio
依然报错:fatal error: failed building wheel for pyaudio
编译过程中系统提示:/home/xxx/anaconda3/compiler_combat下缺少lportaudio文件.

根据刚才的观察,PYAUDIO的lib文件夹下存在有libportaudio.so文件,据此我推测问题应该还是与portaudio这个依赖包有关。
于是我再次使用ln命令建立了以下软链接:
ln -s /home/xxx/PYAUDIO/lib/libportaudio.so /home/xxx/anaconda3/compiler_combat.

问题成功解决,安装pyaudio成功。

总结:补充说明

1.我的电脑出现问题是因为修改路径次数过多,软链接建立太多,文件随意乱删导致。可能不具有典型性。
2.从上文应该可知,我的电脑安装了anaconda,它可能已经帮助我安装好了python的依赖包(python-all-dev),所以这并不意味着这个依赖不重要。
3.根据报错信息抽丝剥茧,追根溯源,问题一般都能解决。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页