为了安装pip install pyaudio花费不少时间,坑

在macOSMonterey12.6.5上,由于pyaudio没有预编译的macOSwheels,用户遇到了使用pip安装时的编译问题。问题涉及到clang版本、头文件路径和库的兼容性。升级clang到16版,配置LLVM环境变量后,编译通过,但链接阶段出现!tapi-tbd的错误。最终,通过将/usr/bin置于PATH环境变量的前面解决了问题,成功安装了pyaudio。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录一下吧:

环境: mac OS Monterey 12.6.5

pyaudio是没有mac下的whl, 通过pip安装是需要进行编译的,我原来系统的是/usr/local/bin/clang 15.0.0版本,然后调用的C_CLUDE_PATH就是/usr/local/include和下面的c++/v1,还用到了python头文件,各种出错,连最常见的NULL定义都会说找不到,然后我就不断修改头文件的内容,能解决很多问题,但是到后面问题越来越多,连FILE定义都找不到。

xcode-select --install 也安装了一次,不管用。

通过查询,说可能clang的版本和库不兼容,这个可是15版本啊,最高也就是16,没办法,就升级吧,发现用的llvm, brew install llvm, 然后根据提示配置LLVM。

# llvm
LDFLAGS="-L/usr/local/opt/llvm/lib/c++ -Wl,-rpath,/usr/local/opt/llvm/lib/c++"
export PATH="/usr/local/opt/llvm/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/llvm/lib"
export CPPFLAGS="-I/usr/local/opt/llvm/include"

然后再次 pip install pyaudio, 竟然编译通过了,但是链接出现了错误:

ld: unsupported tapi file type '!tapi-tbd' in YAML file '/Library/Developer/CommandLineTools/SDKs/MacOSX12.sdk/usr/lib/libSystem.tbd' for architecture x86_64 clang-16: error: linker command failed with exit code 1 (use -v to see invocation) error: command '/usr/local/opt/llvm/bin/clang' failed with exit code 1

问了hugging.co/chat, 这个GPT更白痴,没啥价值,只好问了chatGPT 3.5

 这个错误通常是因为 Xcode 或者 Command Line Tools 版本较老或不兼容当前的 MacOSX 版本导致的。您可以尝试更新 Xcode 或者 Command Line Tools 到最新版本,或者升级你的 Mac 系统。如果更新还没有解决问题,你可以尝试手动清除缓存、重置 Xcode 设置或启用 Bitcode 等方法来解决该问题。

也是不对的。

只要百度了,还真找到有人踩过坑的。

不过解决方案不适合我。

最后找到了一个:HEASoft: Known Issues In v6.31.1

Another common problem in the configure stage is the following:

ld: unsupported tapi file type '!tapi-tbd' in YAML file '/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib/libSystem.tbd' for architecture x86_64

This can typically be resolved by putting /usr/bin at the front of your PATH environment variable (as recommended in our Mac installation guide). 

 笑了,只要将/usr/bin放到path的前面就能解决问题,我的/usr/bin一直在最后。

果真,链接通过了,神奇!

现在各种库,各种指令,好多都相互不兼容,现在配置一个系统,编译一个组件都很难。

pip install pyaudio
Collecting pyaudio
  Using cached PyAudio-0.2.13.tar.gz (46 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: pyaudio
  Building wheel for pyaudio (pyproject.toml) ... done
  Created wheel for pyaudio: filename=PyAudio-0.2.13-cp310-cp310-macosx_10_9_x86_64.whl size=24066 sha256=e9a758ae53b38fd8dd31b63aa77250d84f1fc57e84a6c71feaae8b4b97ed671d
  Stored in directory: /Users/xinnianwang/Library/Caches/pip/wheels/14/f1/c2/d102b4765a82c5a7bb273998dca7e4a53fc58e9a1a516fda81
Successfully built pyaudio
Installing collected packages: pyaudio
Successfully installed pyaudio-0.2.13

### 安装 PyAudio 的方法 要通过 `pip` 守住安装 PyAudio,可以运行以下命令: ```bash pip install pyaudio ``` 然而,在某些情况下可能会遇到一些常见问题。以下是解决这些问题的具体方法。 #### Windows 平台上的解决方案 在 Windows 上,默认的编译器可能无法满足 PortAudio(PyAudio 所依赖的核心库)的需求[^1]。因此,推荐使用预构建的二进制文件来简化安装过程。可以通过指定特定版本的 wheel 文件完成安装。例如: ```bash pip install https://files.pythonhosted.org/packages/08/ab/cd/pyaudio-0.2.11-cp39-cp39-win_amd64.whl ``` 注意:上述链接中的具体 URL 和版本号会因时间而变化,请访问 [Python Package Index (PyPI)](https://pypi.org/project/PyAudio/#files) 获取最新可用的 wheel 文件。 #### Linux 平台上的解决方案 在基于 Debian 或 Ubuntu 的系统上,通常需要先安装 PortAudio 开发包才能成功安装 PyAudio。这可以通过系统的包管理工具实现: ```bash sudo apt-get update && sudo apt-get install portaudio19-dev ``` 之后再执行标准的 pip 命令即可正常工作: ```bash pip install pyaudio ``` 对于其他发行版,需找到对应的 PortAudio 库并确保已正确配置开发环境。 #### macOS 平台上的解决方案 macOS 用户同样需要预先安装 PortAudio。最简单的方式是利用 Homebrew 工具链来进行设置: ```bash brew install portaudio ``` 随后继续按照常规流程操作: ```bash pip install pyaudio ``` 如果仍然出现问题,则可能是由于兼容性或其他原因引起的;此时可尝试升级 setuptools 及 pip 自身以获得更好的支持体验: ```bash pip install --upgrade pip setuptools ``` --- ### 注意事项 有时即使遵循以上指导也可能失败,特别是当目标机器缺乏必要的 C 编译器或者存在路径冲突等情况时。这种情形下建议查阅官方文档获取进一步帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caridle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值