首页 > 解决方案 > 使用 PIP 安装的 PyAudio 缺少文件?

问题描述

我正在尝试为一个项目安装 PyAudio。我已经添加了我的 python 安装路径C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64和 Scripts 子文件夹。我正在运行一个提升的 CMD 实例。我输入:pip install PyAudio。构建过程开始。下面是输出:

Microsoft Windows [Version 10.0.18362.592]
(c) 2019 Microsoft Corporation. All rights reserved.

C:\WINDOWS\system32>pip install PyAudio
Collecting PyAudio
  Using cached PyAudio-0.2.11.tar.gz (37 kB)
Building wheels for collected packages: PyAudio
  Building wheel for PyAudio (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: 'c:\program files (x86)\microsoft visual studio\shared\python37_64\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\aweso\\AppData\\Local\\Temp\\pip-install-mi36cn5j\\PyAudio\\setup.py'"'"'; __file__='"'"'C:\\Users\\aweso\\AppData\\Local\\Temp\\pip-install-mi36cn5j\\PyAudio\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\aweso\AppData\Local\Temp\pip-wheel-7out287e'
       cwd: C:\Users\aweso\AppData\Local\Temp\pip-install-mi36cn5j\PyAudio\
  Complete output (17 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build\lib.win-amd64-3.7
  copying src\pyaudio.py -> build\lib.win-amd64-3.7
  running build_ext
  building '_portaudio' extension
  creating build\temp.win-amd64-3.7
  creating build\temp.win-amd64-3.7\Release
  creating build\temp.win-amd64-3.7\Release\src
  C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -DMS_WIN64=1 "-Ic:\program files (x86)\microsoft visual studio\shared\python37_64\include" "-Ic:\program files (x86)\microsoft visual studio\shared\python37_64\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\ATLMFC\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\cppwinrt" /Tcsrc/_portaudiomodule.c /Fobuild\temp.win-amd64-3.7\Release\src/_portaudiomodule.obj
  _portaudiomodule.c
  c:\program files (x86)\microsoft visual studio\shared\python37_64\include\pyconfig.h(117): warning C4005: 'MS_WIN64': macro redefinition
  src/_portaudiomodule.c: note: see previous definition of 'MS_WIN64'
  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\\2019\\Community\\VC\\Tools\\MSVC\\14.24.28314\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2
  ----------------------------------------
  ERROR: Failed building wheel for PyAudio
  Running setup.py clean for PyAudio
Failed to build PyAudio
Installing collected packages: PyAudio
    Running setup.py install for PyAudio ... error
    ERROR: Command errored out with exit status 1:
     command: 'c:\program files (x86)\microsoft visual studio\shared\python37_64\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\aweso\\AppData\\Local\\Temp\\pip-install-mi36cn5j\\PyAudio\\setup.py'"'"'; __file__='"'"'C:\\Users\\aweso\\AppData\\Local\\Temp\\pip-install-mi36cn5j\\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\aweso\AppData\Local\Temp\pip-record-e30_qx6x\install-record.txt' --single-version-externally-managed --compile --install-headers 'c:\program files (x86)\microsoft visual studio\shared\python37_64\Include\PyAudio'
         cwd: C:\Users\aweso\AppData\Local\Temp\pip-install-mi36cn5j\PyAudio\
    Complete output (17 lines):
    running install
    running build
    running build_py
    creating build
    creating build\lib.win-amd64-3.7
    copying src\pyaudio.py -> build\lib.win-amd64-3.7
    running build_ext
    building '_portaudio' extension
    creating build\temp.win-amd64-3.7
    creating build\temp.win-amd64-3.7\Release
    creating build\temp.win-amd64-3.7\Release\src
    C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -DMS_WIN64=1 "-Ic:\program files (x86)\microsoft visual studio\shared\python37_64\include" "-Ic:\program files (x86)\microsoft visual studio\shared\python37_64\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\ATLMFC\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\cppwinrt" /Tcsrc/_portaudiomodule.c /Fobuild\temp.win-amd64-3.7\Release\src/_portaudiomodule.obj
    _portaudiomodule.c
    c:\program files (x86)\microsoft visual studio\shared\python37_64\include\pyconfig.h(117): warning C4005: 'MS_WIN64': macro redefinition
    src/_portaudiomodule.c: note: see previous definition of 'MS_WIN64'
    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\\2019\\Community\\VC\\Tools\\MSVC\\14.24.28314\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2
    ----------------------------------------
ERROR: Command errored out with exit status 1: 'c:\program files (x86)\microsoft visual studio\shared\python37_64\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\aweso\\AppData\\Local\\Temp\\pip-install-mi36cn5j\\PyAudio\\setup.py'"'"'; __file__='"'"'C:\\Users\\aweso\\AppData\\Local\\Temp\\pip-install-mi36cn5j\\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\aweso\AppData\Local\Temp\pip-record-e30_qx6x\install-record.txt' --single-version-externally-managed --compile --install-headers 'c:\program files (x86)\microsoft visual studio\shared\python37_64\Include\PyAudio' Check the logs for full command output.

C:\WINDOWS\system32>

据我了解,无法构建轮子,因为_portaudiomodule.c试图包含portaudio.h,但由于某种原因不存在。

在构建轮子失败后, pip 然后尝试运行setup.py,它再次调用portaudiomodule.c,它又不能包含portaudio.h

这是 pypi.org 上的软件包错误还是我安装的 pip 错误?

Python 3.7.5,安装在 Visual Studio Community 2019 下。Windows 10 主页

标签: pythonpip

解决方案


PyPi 中的版本似乎存在问题。(另见这个答案

PyAudio 的维护者还没有为在 Windows 上运行的 python 3.7 构建它,所以你的系统正在尝试编译它,但失败了。

如果你可以访问 Python 3.6,你应该可以在那里从 PyPi 安装。

看起来让它在 Python 3.7 上运行的最好方法是使用Christoph Gohlke的预构建轮子

编辑:使用安装说明进行更新(参考

您需要特定于您的版本和构建 python(3.7、64 位)的轮子,因此您需要下载PyAudio‑0.2.11‑cp37‑cp37m‑win_amd64.whl

然后将该文件提供给 pip 例如

pip install C:\Users\AwsesomeCronk\Downloads\PyAudio‑0.2.11‑cp37‑cp37m‑win_amd64.whl

如果 Visual Studio 对您的环境做了一些有趣的事情,例如隐藏系统文件,您可能需要将 .whl 文件复制到您的项目目录并从那里安装。


推荐阅读