LoginSignup
14
3

More than 3 years have passed since last update.

pipでpyaudioが入らない時の対処法

Last updated at Posted at 2019-07-28

Overview

pyaudioを入れようとしたらエラーが出た.

やったこと

  1. Xcodeセットアップツールの更新
  2. pipセットアップツールの更新
  3. 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サイドの問題解決

直接的に関係があるかはわからないですが,こちらを参考にpipsetuptoolsの更新をしました.
具体的には

pip3 install --upgrade pip setuptools

をしました.(pipだとanaconda行きのため一応pip3で)
結果setuptools40.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の設定が楽と言いますが,それでもわからないことだらけです.

14
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
3