📝
fatal error: 'portaudio.h' file not found
環境
m1 macbook pro
本題
PyAudioをpipでインストールしようとする時に出るやつですね。
portaudioというライブラリが足りてないようなので、相変わらずMacPortsで入れます。
インストール確認、OK.
port installed | grep portaudio
portaudio @20240308-88ab584e_0 (active)
ただ、これだけだと、pip install PyAudio
を実行しても、同じエラーが出ます。
ヘッダーファイルの場所はどこ?
port info portaudio
だと見れないみたいでした。
他にいい方法が見つからなかったので、今までの経験と勘により、
/opt/local/include/portaudio.h
に見つけました。
どうやって、ヘッダーファイルの場所をpipに伝えるの?
まずは、こちらの記事を参考にさせていただきました。
$ pip install --global-option='build_ext' --global-option='-I/usr/local/include' --global-option='-L/usr/local/lib' PyAudio
DEPRECATION: --build-option and --global-option are deprecated. pip 24.2 will enforce this behaviour change. A possible replacement is to use --config-settings. Discussion can be found at https://github.com/pypa/pip/issues/11859
WARNING: Implying --no-binary=:all: due to the presence of --build-option / --global-option.
DEPRECATIONとWARNINGは関係ないですが、失敗しました。
関係はないんですが、新しい方法でやってみたかったので、pipのマニュアルを見ながら下記を実行しました。
$ pip install -C='build_ext' -C='-I/usr/local/include' -C='-L/usr/local/lib' PyAudio
ERROR: Could not build wheels for PyAudio, which is required to install pyproject.toml-based projects
今度は、別のエラーが出ました。
pyproject.toml
は確かに存在していましたし、poetryは今後も使っていくでしょうから、根本的に解決したいです。
やっとインストールできた
上記参考にさせていただき、${HOME}/.pydistutils.cfgを下記のように設定してみました。
[build_ext]
include_dirs=/opt/local/include
library_dirs=/opt/local/lib
homebrewを使ってないので、localに変えてます。これでインストールできました。
Discussion