繁体   English   中英

无法导入 PyAudio C 模块“_portaudio”。 (Mac M1),关于找不到符号:_PaMacCore_SetupChannelMap

[英]Could not import the PyAudio C module '_portaudio'. (Mac M1), about Symbol not found: _PaMacCore_SetupChannelMap

我正在尝试使用 M1 芯片在我的 Macbook 上导入 pyaudio。 我有 python 版本 3.9.6 和 anaconda (python 3.8),现在在终端上使用的版本是 3.9.6。

在我收到此错误之前,我修复了“brew install portaudio”和“pip install pyaudio”问题。 Portaudio 和 Paudio 安装正常! 但是当我尝试导入pyaudio时,

Could not import the PyAudio C module '_portaudio'.
Traceback (most recent call last):
  File "/Users/hson/Desktop/k.A.I_speaker/test.py", line 2, in <module>
    import make_pyaudio
  File "/Users/hson/Desktop/k.A.I_speaker/make_pyaudio.py", line 1, in <module>
    import pyaudio
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pyaudio.py", line 116, in <module>
    import _portaudio as pa
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/_portaudio.cpython-39-darwin.so, 2): Symbol not found: _PaMacCore_SetupChannelMap
  Referenced from: /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/_portaudio.cpython-39-darwin.so
  Expected in: flat namespace
 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/_portaudio.cpython-39-darwin.so

我尝试卸载portaudio&pyaudio并重新安装了很多次,但我仍然无法解决这个问题。

有没有人遇到这个问题并解决它?

我的 Portaudio 和 PyAudio 安装在 Mac M1 上也很成功,它们甚至可以工作几天。 但是突然当我尝试导入 pyaudio 时它说:

导入错误:dlopen(/Users/madhurij/opt/anaconda3/lib/python3.8/site-packages/_portaudio.cpython-38-darwin.so, 2):找不到符号:_PaMacCore_SetupChannelMap 引用自:/Users/madhurij/opt /anaconda3/lib/python3.8/site-packages/_portaudio.cpython-38-darwin.so 预期在:/Users/madhurij/opt/anaconda3/lib/python3.8/site-packages/_portaudio.cpython 中的平面命名空间-38-darwin.so

有人可以帮忙吗? 我曾多次尝试卸载自制软件、portaudio 和 pyaudio。 但似乎没有任何效果。

有两种解决方案取决于您需要使用的架构。 对于两者,/portaudio/ 之后的版本号可能会有所不同,请根据您的进行调整。

用于基于 Intel 的自制软件安装

对于那些必须使用尚未可用于 arm 架构的 python 包的人,我们必须恢复为基于 intel 的 Python 包。 这不是微不足道的,花了我将近一天的时间,所以我把它描述了一段时间,供有需要的人使用。

这是您需要做的:

  1. 在 Rosetta 下运行终端在罗塞塔下奔跑

  2. 将自制软件安装为基于英特尔的版本

在 (1) 中创建的终端中,运行:

arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
  1. 为基于英特尔的自制软件创建别名

在 .bash_profile 中,插入:

alias ibrew="arch -x86_64 /usr/local/bin/brew"
  1. 安装 boost 和 boost_python 库:

使用步骤 (3) 中的 brew,运行:

ibrew install --build-from-source -vd boost
ibrew install --build-from-source -vd boost-python3
  1. 安装 portaudio

使用步骤 (3) 中的 brew,运行:

ibrew install portaudio
ibrew link portaudio

KEY:这会将portaudio安装到/usr/local/Cellar/portaudio/19.7.0,并且必须引用pyaudio安装!!!

  1. 安装 pyaudio

我们现在可以使用基于 intel 的自制软件安装的 portaudio 版本来安装 pyaudio。 /portaudio/ 后面的版本号可能不同,请根据您的调整。

python -m pip install --global-option='build_ext' --global-option='-I/usr/local/Cellar/portaudio/19.7.0/include' --global-option='-L/usr/local/Cellar/portaudio/19.7.0/lib' --force pyaudio 

用于基于 ARM 的自制软件安装

  1. 使用普通冲泡

跑:

brew install boost 
brew install boost-python
brew install portaudio
brew link portaudio
  1. 安装 PyAudio

跑:

python -m pip install --global-option='build_ext' --global-option='-I/opt/homebrew/Cellar/portaudio/19.7.0/include' --global-option='-L/opt/homebrew/Cellar/portaudio/19.7.0/lib' pyaudio

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM