Я пытаюсь следовать этому уроку здесь, и когда после установки 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 и путей поиска библиотек.
Вот шаги, которые могут помочь решить вашу проблему:
-
Убедитесь, что Homebrew установлен для архитектуры ARM64. Если у вас есть Intel-бесплатная версия Homebrew, это может привести к столкновению библиотек. Убедитесь, что вы используете правильную версию.
arch -arm64e brew install portaudio
-
Установите PyAudio через conda. Вместо использования pip, попробуйте установить PyAudio через conda, что может устранить проблемы с бинарными несовместимостями:
conda install -c anaconda pyaudio
-
Проверьте установленные библиотеки. Убедитесь, что вы установили все необходимые библиотеки, являетесь ли вы в правильной среде conda:
conda list
-
Соберите и установите PortAudio вручную. Если предыдущие шаги не помогли, вы можете попробовать установить PortAudio вручную.
brew uninstall portaudio brew install portaudio
Затем убедитесь, что в вашей системе установлен PyAudio:
pip uninstall pyaudio pip install pyaudio
-
Создайте виртуальную среду. Попробуйте создать новую виртуальную среду conda и установите только необходимые зависимости для вашего проекта:
conda create -n myenv python=3.12 conda activate myenv conda install -c anaconda pyaudio
-
Используйте Rosetta 2. Если вы все еще сталкиваетесь с проблемой, попробуйте запустить ваше окружение через Rosetta 2, чтобы эмулировать архитектуру x86:
- Откройте терминал через Rosetta 2. Найдите "Терминал" в Finder, затем правой кнопкой мыши нажмите на него и выберите "Получить информацию". Установите флажок "Открыть с помощью Rosetta".
- Попробуйте снова установить и запустить ваш проект.
-
Проверьте переменные среды. Убедитесь, что переменные среды правильно настроены, особенно переменные, касающиеся библиотек.
- Проверьте документацию и обновления. Убедитесь, что вы используете последнюю версию PyAudio и PortAudio, так как разработчики могут выпускать обновления, которые фиксируют известные проблемы.
Если ни один из этих шагов не помог, вы можете создать вопрос на Stack Overflow, предоставив подробное описание вашей проблемы и шаги, которые вы уже предприняли. Это поможет другим пользователям предложить вам более конкретное решение.