如何解决PyAudio、PortAudio的安装问题:“fatal error C1083: Cannot open include file: 'portaudio.h': No such file or directory”

33

我在安装PyAudio和portaudio时遇到了问题。

当我运行python -m pip install pyaudio时,我收到了以下错误:

    src/_portaudiomodule.c(29): fatal error C1083: Cannot open include file: 'portaudio.h': No such file or directory
    error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.14.26428\\bin\\HostX86\\x86\\cl.exe' failed with exit status 2
    ----------------------------------------
Command ""C:\Users\This PC\AppData\Local\Programs\Python\Python37-32\python.exe" -u -c "import setuptools, tokenize;__file__='C:\\Users\\THISPC~1\\AppData\\Local\\Temp\\pip-install-3ock7jqh\\pyaudio\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\THISPC~1\AppData\Local\Temp\pip-record-14pe9p6y\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\Users\THISPC~1\AppData\Local\Temp\pip-install-3ock7jqh\pyaudio\

在查找了该错误后,我发现需要安装portaudio。所以我运行了python -m pip install portaudio,但是出现了以下错误:

Collecting portaudio
Could not find a version that satisfies the requirement portaudio (from versions: )
No matching distribution found for portaudio

我现在不知道该从这里去哪里。

10个回答

76

尝试这个,以管理员身份运行CMD并运行以下命令:

pip install pipwin
pipwin install pyaudio

5
这个答案应该被接受,因为它是该问题的实际答案。由于问题涉及在Windows操作系统上安装pyaudio时出现的错误,而这个解决方案可以解决该问题。 - Zain Ul Abidin
@ZainUlAbidin "conda"对我也是一个可行的解决方案;不过看起来"pipwin"更加轻量级。 - Reinderien
对我来说非常有效,如果您能给我的答案点个赞就太好了。 - Muzzamil
非常感谢! - Eren Atas
2
在安装pyaudio之前,我必须执行 pipwin refresh 命令,否则会出现HTTP 404错误。 - comodoro
pipwin没有安装到路径中,但是python -m pipwin install pyaudio可以工作。 - high_byte

18

portaudio不是Python包,而是完全独立于Python的C库,因此无法通过pip安装。

有关获取它并在您的平台上安装它的官方方法的详细信息,请参见PortAudio网站。

据我所知,在Windows上获取它的官方方法是下载源代码,然后按照教程中的说明自行编译。您可能希望使用与Python C扩展相同的编译器构建它,尽管我不确定是否需要这样做。

或者,如果您在Windows上使用像Chocolatey这样的第三方软件包管理器,则很有可能它可以安装PortAudio。

或者,如果您使用Anaconda或Miniconda作为Python,conda软件包管理器知道如何安装Python包依赖的非Python软件包,包括portaudio

最后,似乎有许多人提供非官方的预编译PortAudio二进制文件供Windows使用。如果您搜索“portaudio windows binary”或“portaudio windows pre-compiled”,您将找到其中的一些。我不知道这些中的任何一个经过了多少测试,是否最新等等。


如果您使用Anaconda/Miniconda,您应该先使用conda install pyaudio而不是pip install pyaudio。您应该只在没有condaconda-forge提供的软件包时使用pip。如果您还没有设置conda-forge,那么您可能首先想要这样做:
conda config --add channels conda-forge 

然后,这应该是你所需要的全部:

conda install pyaudio

pip包不同,它只是假设您已经正确安装了portaudioconda包将自动将portaudio安装为pyaudio的依赖项,或告诉您为什么无法安装。

1
如果你正在使用Anaconda, 为什么要使用pip install pyaudio而不是conda install pyaudio呢? - abarnert
@KevinM1990112qwq 你安装了两个或更多不同版本的Python吗?如果你正确安装了Anaconda,那么conda应该在你的PATH中。(如果没有,python就不应该在你的PATH中,或者pip也不应该在你的PATH中,所以_什么都不应该工作_)。 - abarnert
额,我该如何告诉Sublime Text使用Anaconda版本的Python而不是普通版本的Python? - KevinM1990112qwq
@KevinM1990112qwq 嗯,Anaconda只有在过去一年左右才真正变得惊人。而对于每个人来说,“pip”加上你的发行版包管理器都非常有效——当然,除了使用Windows且不使用第三方软件包管理器的全球85%的用户。 - abarnert
@KevinM1990112qwq 嗯,conda 只存在于 Anaconda 中,而不是普通的 Python,所以这一部分肯定是正确的。至于它用于代码高亮、调试等方面的 Python 是什么,我不确定是否有单独的设置;我不使用 Sublime。但它可能有一些选项来打开 Python 交互式控制台或其他东西?如果是这样,你应该能够从打印在该控制台顶部的横幅中看出来。 - abarnert
显示剩余9条评论

12
官方版本的 PyAudio 0.2.11 不支持 Python 3.7+,尝试安装会导致错误 C1083:无法打开包括文件 'portaudio.h'。然而,有一些非官方版本 的 PyAudio 支持 3.7+。如果你正在使用官方版本,则必须使用 Python 3.6 和 PyAudio 0.2.11。请查看 http://people.csail.mit.edu/hubert/pyaudio/

1
有没有 pyaudio 的替代品可以在 Python3.7 中使用? - Naazneen Jatu
2
@NaazneenJatu,请安装3.6版本,并在其中使用virtualenv。 - m3nda
1
给未来的人们:有非官方的pyaudio wheel构建版本,可以让你在像3.7+这样的最新Python中安装它。请参见此处:https://dev59.com/JlQK5IYBdhLWcg3wMNIV#55630212 - Starwarswii
谢谢@Starwarswii,我已将此信息添加到答案中。 - cowlinator

3
在Ubuntu发行版上,您可以首先运行以下命令:
sudo apt install portaudio19-dev

然后再次使用pip重新安装pyaudio。


3
如果你在试图使用 pipwin 安装时遇到错误,你需要通过 Python 运行它,因为 Windows 不会识别 pipwin(至少对我而言)。
pip install pipwin
python -m pipwin install pyaudio

2

我在Python 3.6.x上安装了Pyaudio没有问题,但在之后的版本上却无法正常工作。

py -m pip install pyaudio

这个功能在3.6.x或更早版本上完美运行。


1
您可以使用Anaconda安装pyaudio。您必须将Anaconda添加到路径中。安装Anaconda并添加到路径后,在命令提示符[cmd]中键入conda install pyaudio。然后就完成了。

0
使用以下命令
pip install pipwin
pipwin refresh
pipwin install pyaudio

0
如果您正在使用Anaconda,则此问题是因为您的版本未升级。要升级所有软件包,请在终端中运行以下命令。

conda update --all


-4
您可以使用以下命令安裝Portaudio
pip install port audio

你可能还需要

pip install ConfigParser

请告诉我它是否有效。


1
@studioj,它不支持Python 3.7,这个库目前只更新到3.6。 - Sarthak Chauhan

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