Ошибка “Символ Pyaudio не найден в плоском пространстве имен”

Вопросы и ответы

Я пытаюсь следовать этому уроку здесь, и когда после установки portaudio я пытаюсь запустить код, я встречаюсь с этим сообщением об ошибке:

Файл “/opt/anaconda3/envs/adelaide/lib/python3.12/site-packages/pyaudio/init.py”, строка 111, в
импорт pyaudio._portaudio как pa
ImportError: dlopen(/opt/anaconda3/envs/adelaide/lib/python3.12/site-packages/pyaudio/_portaudio.cpython-312-darwin.so, 0x0002): символ не найден в плоском пространстве ‘_PaMacCore_SetupChannelMap’

Я работаю на M3 Pro Max, похоже, что pyaduio и portaudio могут сталкиваться с проблемами на Apple Silicon?

Эта тема кажется имеет ту же проблему, но никто не смог помочь. Я пытался удалить и переустановить каждый пакет из урока, homebrew, и даже проверял, что все они установлены в правильной среде. Я использую conda, если это поможет. Я пробовал множество других принудительных установок с тегами, которые нашел на предыдущих темах, но ничего не работает.

Ответ

Проблема, с которой вы столкнулись, связана с несовместимостью между PyAudio и PortAudio на устройствах Apple с процессором M1/M2/M3. Эта проблема может возникать из-за специфики архитектуры Apple Silicon и путей поиска библиотек.

Вот шаги, которые могут помочь решить вашу проблему:

  1. Убедитесь, что Homebrew установлен для архитектуры ARM64. Если у вас есть Intel-бесплатная версия Homebrew, это может привести к столкновению библиотек. Убедитесь, что вы используете правильную версию.

    arch -arm64e brew install portaudio
  2. Установите PyAudio через conda. Вместо использования pip, попробуйте установить PyAudio через conda, что может устранить проблемы с бинарными несовместимостями:

    conda install -c anaconda pyaudio
  3. Проверьте установленные библиотеки. Убедитесь, что вы установили все необходимые библиотеки, являетесь ли вы в правильной среде conda:

    conda list
  4. Соберите и установите PortAudio вручную. Если предыдущие шаги не помогли, вы можете попробовать установить PortAudio вручную.

    brew uninstall portaudio
    brew install portaudio

    Затем убедитесь, что в вашей системе установлен PyAudio:

    pip uninstall pyaudio
    pip install pyaudio
  5. Создайте виртуальную среду. Попробуйте создать новую виртуальную среду conda и установите только необходимые зависимости для вашего проекта:

    conda create -n myenv python=3.12
    conda activate myenv
    conda install -c anaconda pyaudio
  6. Используйте Rosetta 2. Если вы все еще сталкиваетесь с проблемой, попробуйте запустить ваше окружение через Rosetta 2, чтобы эмулировать архитектуру x86:

    • Откройте терминал через Rosetta 2. Найдите "Терминал" в Finder, затем правой кнопкой мыши нажмите на него и выберите "Получить информацию". Установите флажок "Открыть с помощью Rosetta".
    • Попробуйте снова установить и запустить ваш проект.
  7. Проверьте переменные среды. Убедитесь, что переменные среды правильно настроены, особенно переменные, касающиеся библиотек.

  8. Проверьте документацию и обновления. Убедитесь, что вы используете последнюю версию PyAudio и PortAudio, так как разработчики могут выпускать обновления, которые фиксируют известные проблемы.

Если ни один из этих шагов не помог, вы можете создать вопрос на Stack Overflow, предоставив подробное описание вашей проблемы и шаги, которые вы уже предприняли. Это поможет другим пользователям предложить вам более конкретное решение.

Оцените материал
Добавить комментарий

Капча загружается...