Overview
pyaudioを入れようとしたらエラーが出た.
やったこと
- Xcodeセットアップツールの更新
- pipセットアップツールの更新
-
portaudio
のインストール(brew)
環境
- macOS Mojave 10.14.6
- Python 3.7.3
- pip 19.2.1
実際に出たエラー
pip3 install pyaudio
pipだとcondaにぶちこまれる設定のためpip3
を利用しています.
Command "/usr/local/opt/python/bin/python3.7 -u -c "import setuptools, tokenize;__file__='/private/var/folders/4k/bzsywl69619c1t7dws5_h43w0000gn/T/pip-install-9gsm8qwi/pyaudio/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /private/var/folders/4k/bzsywl69619c1t7dws5_h43w0000gn/T/pip-record-6t7resky/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/var/folders/4k/bzsywl69619c1t7dws5_h43w0000gn/T/pip-install-9gsm8qwi/pyaudio/
こんな感じのエラーが出ました.
推定される原因
- 最近Xcodeのアプデがあった
- Pythonでの音声処理をまったくやってないため,なんか設定が必要
解決策
解決策というより実際にやったことです
1. Xcodeの再設定
こちらの記事を参考にXcodeのセットアップをしてみました.
1-1. Xcode立ち上げてセットアップ
Xcodeを立ち上げてセットアップツールをインストール
→ ダメ
1-2. xcode-select --install
を実施
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
と言われダメ
1-3. Apple Developerから手動でインストール
ここからCommand Line Tools(macOS 10.14) for Xcode 10.3
をダウンロードし,実行.
→ダメ(変わらなかった)
2と3に関しては1で再設定したため変わらなかった可能性があります.
2. pipサイドの問題解決
直接的に関係があるかはわからないですが,こちらを参考にpip
のsetuptools
の更新をしました.
具体的には
pip3 install --upgrade pip setuptools
をしました.(pipだとanaconda行きのため一応pip3で)
結果setuptools
が40.8.0
から41.0.1
に更新されました.
この状態でpyaudioインストールを試みました.
その結果...
ERROR: Command errored out with exit status 1:
command: /usr/local/opt/python/bin/python3.7 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/4k/bzsywl69619c1t7dws5_h43w0000gn/T/pip-install-0e82wcyk/pyaudio/setup.py'"'"'; __file__='"'"'/private/var/folders/4k/bzsywl69619c1t7dws5_h43w0000gn/T/pip-install-0e82wcyk/pyaudio/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/4k/bzsywl69619c1t7dws5_h43w0000gn/T/pip-record-2_i9454h/install-record.txt --single-version-externally-managed --compile
cwd: /private/var/folders/4k/bzsywl69619c1t7dws5_h43w0000gn/T/pip-install-0e82wcyk/pyaudio/
Complete output (16 lines):
running install
running build
running build_py
creating build
creating build/lib.macosx-10.14-x86_64-3.7
copying src/pyaudio.py -> build/lib.macosx-10.14-x86_64-3.7
running build_ext
building '_portaudio' extension
creating build/temp.macosx-10.14-x86_64-3.7
creating build/temp.macosx-10.14-x86_64-3.7/src
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -DMACOSX=1 -I/usr/local/include -I/usr/local/opt/openssl/include -I/usr/local/opt/sqlite/include -I/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/include/python3.7m -c src/_portaudiomodule.c -o build/temp.macosx-10.14-x86_64-3.7/src/_portaudiomodule.o
src/_portaudiomodule.c:29:10: fatal error: 'portaudio.h' file not found
#include "portaudio.h"
^~~~~~~~~~~~~
1 error generated.
error: command 'clang' failed with exit status 1
----------------------------------------
ERROR: Command errored out with exit status 1: /usr/local/opt/python/bin/python3.7 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/4k/bzsywl69619c1t7dws5_h43w0000gn/T/pip-install-0e82wcyk/pyaudio/setup.py'"'"'; __file__='"'"'/private/var/folders/4k/bzsywl69619c1t7dws5_h43w0000gn/T/pip-install-0e82wcyk/pyaudio/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/4k/bzsywl69619c1t7dws5_h43w0000gn/T/pip-record-2_i9454h/install-record.txt --single-version-externally-managed --compile Check the logs for full command output.
エラーの種類が変わりました.
しかし,未だ入れられず.
Xcodeが原因ではない気がしたので,pipに絞って調べました.
3. Homebrew側の問題
調べているとこの記事を見つけました.ここでportaudio
を入れないといけないみたいなので入れてやってみました.
brew install portaudio
少し時間はかかりましたが,ここは問題なくできました.
改めて
pip3 install pyaudio
すると,うまく入りました!(pyaudio
のバージョンは0.2.11
)
結論
色々やったので断定はできないですが,原因としてはXcode側とpyaudio
側に分けられるのではないかと考えます.
Xcode更新 → セットアップツールインストール(1回起動すればOK).
pyaudio
入れる → portaudio
を入れておく.
といった感じです.Winに比べてmacはpythonの設定が楽と言いますが,それでもわからないことだらけです.