【问题标题】:Import pyaudio doesn't work - Symbol not found: _PaMacCore_SetupChannelMap on mac (Big Sur M1 Apple Silicon)导入 pyaudio 不起作用 - 找不到符号:mac 上的 _PaMacCore_SetupChannelMap(Big Sur M1 Apple Silicon)
【发布时间】:2021-04-18 21:29:49
【问题描述】:

我正在尝试使用 M1 芯片 (Big Sur) 在我的新 Macbook Air 上安装 pyaudio。起初我无法克服著名的src/_portaudiomodule.c:29:10: fatal error: 'portaudio.h' file not found 错误。我记得我在另一台笔记本电脑上也遇到了这个问题,但随后一个简单的brew install portaudio 解决了它。 好吧,这次不行。

在尝试了很多不同的东西之后,我终于找到了this guide,在找到我的自制目录之后,我可以这样做: export LIBRARY_PATH=/opt/homebrew/lib/:$LIBRARY_PATH - 与 C_INCLUDE 相同

完成此操作后,pyaudio 安装正常! 但是,现在当我尝试将 pyaudio 导入任何 python 程序并运行它时出现错误:

Traceback (most recent call last):
  File "/Users/bende/GitHub/fretboard-learner/main.py", line 5, 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

我尝试用谷歌搜索,但无济于事,我真的不确定发生了什么。我能想到的只是它与 M1 芯片有关,因为安装在非 M1 的 Mac 上运行良好。

有人知道是什么原因造成的吗?

【问题讨论】:

    标签: python pyaudio portaudio apple-silicon apple-m1


    【解决方案1】:

    不知道您是否还需要该解决方案,但经过数小时的谷歌搜索,这是我的(我还拥有一台 Mac m1):

    一开始我无法安装 PyAudio,即使在我成功安装 PyAudio 后也遇到了问题。我使用安装了 brew 的 python 3.9 进行该过程。

    1. 卸载以前版本的portaudio + PyAudio
    2. (可选)使用 Brew 主页上的命令安装支持 Mac m1 的最新 Brew
    3. (可选)安装wheel和setuptools:python3 -m pip install --upgrade pip setuptools wheel
    4. 安装最新版本的portaudio(相信这是核心问题,稳定版19.6.0没用):brew install portaudio --HEAD
    5. 使用 pip 安装 PyAudio:python3 -m pip install pyaudio --global-option="build_ext" --global-option="-I/opt/homebrew/include" --global-option="-L/opt /homebrew/lib"

    如果事情不顺利,重启终端可能会有所帮助。

    【讨论】:

    • 我看到了你采取的步骤 - 我想......努力满分......让我们走吧。这对我来说效果很好 - 非常感谢。 Mac - 达尔文内核版本 20.3.0 Python - 3.9.1
    【解决方案2】:

    在解决相同问题时(包括按照 momoclouq 对此问题的回答中的步骤),我也遇到了这个错误。我的最终解决方案是:

    我的自制软件仅安装在 /usr/local 中,用于 Rosetta 模拟 (Intel) 代码。在this Stackoverflow 问题/答案中查看更多信息。

    一旦我在/opt/homebrew 下为 ARM64 安装了正确的自制软件,我就删除了以前的 portaudio 安装并执行了以下操作:

    • $arch -arm64 /opt/homebrew/bin/brew install portaudio
    • $pip3 install --no-cache-dir --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 确保此路径与您的 arch arm64 portaudio 安装对齐。

    【讨论】:

      【解决方案3】:

      对于基于 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
      

      【讨论】:

        猜你喜欢
        • 2021-12-22
        • 2021-09-06
        • 1970-01-01
        • 2021-05-08
        • 1970-01-01
        • 2021-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多