簡體   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