![](/img/trans.png)
[英]Import pyaudio doesn't work - Symbol not found: _PaMacCore_SetupChannelMap on mac (Big Sur M1 Apple Silicon)
[英]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/ 之后的版本號可能會有所不同,請根據您的進行調整。
對於那些必須使用尚未可用於 arm 架構的 python 包的人,我們必須恢復為基於 intel 的 Python 包。 這不是微不足道的,花了我將近一天的時間,所以我把它描述了一段時間,供有需要的人使用。
這是您需要做的:
在 Rosetta 下運行終端在羅塞塔下奔跑
將自制軟件安裝為基於英特爾的版本
在 (1) 中創建的終端中,運行:
arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
在 .bash_profile 中,插入:
alias ibrew="arch -x86_64 /usr/local/bin/brew"
使用步驟 (3) 中的 brew,運行:
ibrew install --build-from-source -vd boost
ibrew install --build-from-source -vd boost-python3
使用步驟 (3) 中的 brew,運行:
ibrew install portaudio
ibrew link portaudio
KEY:這會將portaudio安裝到/usr/local/Cellar/portaudio/19.7.0,並且必須引用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
跑:
brew install boost
brew install boost-python
brew install portaudio
brew link portaudio
跑:
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.