Xun Jian
Xun Jian

Reputation: 1111

when installing pyaudio, pip cannot find portaudio.h in /usr/local/include

I'm using mac osx 10.10 As the PyAudio Homepage said, I install the PyAudio using

brew install portaudio 
pip install pyaudio

the installation of portaudio seems successful, I can find headers and libs in /usr/local/include and /usr/local/lib but when I try to install pyaudio, it gives me an error that

src/_portaudiomodule.c:29:10: fatal error: 'portaudio.h' file not found
#include "portaudio.h"
         ^
1 error generated.
error: command 'cc' failed with exit status 1

actually it is in /usr/local/include why can't it find the file? some answers to similar questions are not working for me(like using virtualenv, or compile it manually), and I want to find a simple way to solve this.

Upvotes: 110

Views: 108333

Answers (17)

Henry Blanchette
Henry Blanchette

Reputation: 71

I had this issue on macOS (M3) more recently. I brew install portaudio already, but still had the missing portaudio.h error. I couldn't figure out anywhere how to fix this. Finally, I tried including the file myself, and this worked:

brew install portaudio
export CPPFLAGS="-I/Users/YOUR_USERNAME_HERE/homebrew/opt/portaudio/include/ -L/Users/YOUR_USERNAME_HERE/homebrew/opt/portaudio/lib/"; pip install pyaudio

assuming that your homebrew installs to /Users/YOUR_USERNAME_HERE/homebrew/.

Upvotes: 0

Vladislavs Dovgalecs
Vladislavs Dovgalecs

Reputation: 1631

Stumbled upon this question and answers when trying to install/build pyaudio package on Macos Sonoma 14.

Original problem was also portaudio.h header not being found. Solved it by installing portaudio using MacPorts:

$ sudo port install portaudio

After that, I tried to install the python package pyaudio and was getting errors like:

$ LDFLAGS="-L/opt/local/lib" CFLAGS="-I/opt/local/include" pip install pyaudio
/Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk/System/Library/Frameworks/CoreMIDI.framework/Headers/MIDIServices.h:1968:65: error: unknown type name 'MIDIReadBlock'; did you mean 'MIDIReadProc'?
       1968 |                                                                 MIDIReadBlock           readBlock )
            |                                                                 ^~~~~~~~~~~~~
            |                                                                 MIDIReadProc
      error: command '/opt/local/bin/gcc-mp-12' failed with exit code 1

Solved the problem by unsetting $CC and $CXX env variables which were pointing to my GCC12 compiler. This effectively enabled Apple's XCode compiler. Hope this helps somebody else with a similar problem.

Upvotes: 1

michaelt
michaelt

Reputation: 349

To install on OpenSuse:

 sudo zypper in portaudio
 sudo zypper in portaudio-devel
 sudo zypper in python311-PyAudio

Do replace "python311" with the python version you're aiming for

Upvotes: 0

fukudama
fukudama

Reputation: 2306

Since pyAudio has portAudio as a dependency, you first have to install portaudio.

#for Mac
brew install portaudio

Then try: pip install pyAudio. If the problem persists after installing portAudio, you can specify the directory path where the compiler will be able to find the source programs (e.g: portaudio.h). Since the headers should be in the /usr/local/include directory:

pip install --global-option='build_ext' --global-option='-I/usr/local/include' --global-option='-L/usr/local/lib' pyaudio

Upvotes: 223

Nicholas Jela
Nicholas Jela

Reputation: 2601

For M1 mac, this is worked for me:

LDFLAGS="-L/opt/homebrew/Cellar/portaudio/19.7.0/lib" CFLAGS="-I/opt/homebrew/Cellar/portaudio/19.7.0/include" pip3 install pyaudio

Res:

 Created wheel for pyaudio: filename=PyAudio-0.2.12-cp310-cp310-macosx_11_0_arm64.whl size=24170 sha256=c74eb581e6bca2400f681f68d33654002722969f1a455ffce87e4e5da05471d8
  Stored in directory: /private/var/folders/m_/kzyr4q_11cl35ngrj77k28f00000gn/T/pip-ephem-wheel-cache-ql1x8ums/wheels/93/08/0b/b915ab1895927641737175e5bc7b6111e8ed0c26daabeecba0
Successfully built pyaudio
Installing collected packages: pyaudio
Successfully installed pyaudio-0.2.12

Be noted, do not using find / its very slow and stupid, using brew info portaudio

Upvotes: 1

Jithin Palepu
Jithin Palepu

Reputation: 804

this is the tested answer for MacBook Pro m2 chip:

first find the location of the portaudio.h file by

sudo find / -name "portaudio.h"

then, once you find the location, copy it and use it in this command.

LDFLAGS="-L/{opt/homebrew/Cellar/portaudio/19.7.0/}lib" CFLAGS="-I/{opt/homebrew/Cellar/portaudio/19.7.0}/include" pip3 install pyaudio

Here replace the location from { } into you file location hopefully this works. I have tried above solutions and this one worked for me.

Upvotes: 3

Eric Saund
Eric Saund

Reputation: 113

For me on 10.10.5 the paths were under /opt/local. I had to add /opt/local/bin to my /etc/paths file. And the command line that worked was

sudo pip install --global-option='build_ext' --global-option='-I/opt/local/include' --global-option='-L/opt/local/lib' pyaudio

Upvotes: 4

Harry
Harry

Reputation: 177

First, you can use Homebrew to install portaudio.

brew install portaudio

Then try to find the portaudio path:

sudo find / -name "portaudio.h"

In my case it is at /usr/local/Cellar/portaudio/19.6.0/include .

Run the command below to install pyaudio

pip install --global-option='build_ext' --global-option='-I/usr/local/Cellar/portaudio/19.6.0/include' --global-option='-L/usr/local/Cellar/portaudio/19.6.0/lib' pyaudio

Upvotes: 14

mathandy
mathandy

Reputation: 2010

Adding a bit of robustness (in case of a non-default homebrew dir) to the snippet from @fukudama,

brew install portaudio
pip install --global-option='build_ext' --global-option="-I$(brew --prefix)/include" --global-option="-L$(brew --prefix)/lib" pyaudio

Upvotes: 5

Giorgos Xou
Giorgos Xou

Reputation: 2164

On Termux (this is what worked for me):

  1. pkg install python
  2. bash -c "$(curl -fsSL https://its-pointless.github.io/setup-pointless-repo.sh)"
  3. pkg install portaudio
  4. pip install pyaudio

Source: pyaudio installing #6235

Upvotes: 1

sawyermclane
sawyermclane

Reputation: 1066

I needed to do the following to install PortAudio on Debian

sudo apt install portaudio19-dev

I also apt install'd python3-portaudio before that, although it didn't work. I'm not sure if that contributed as well.

Upvotes: 31

Dixit
Dixit

Reputation: 91

If you are using anaconda/miniconda to manage your python environments then

conda install pyaudio

installs portaudio at the same time as pyaudio

The following NEW packages will be INSTALLED:

  portaudio          pkgs/main/osx-64::portaudio-19.6.0-h647c56a_4
  pyaudio            pkgs/main/osx-64::pyaudio-0.2.11-py37h1de35cc_2

Upvotes: 3

chaitanya
chaitanya

Reputation: 711

You have to install portaudio first then link that file. Only then you can find that header file (i.e, portaudio.h). To install portaudio in mac by using HomeBrew program use following commands.

brew install portaudio
brew link portaudio
pip install pyaudio

sudo is not needed if you're admin. We should refrain using sudo as it messes up lots of permissions.

Upvotes: 16

Robbie Matthews
Robbie Matthews

Reputation: 1580

On Ubuntu builds:

sudo apt-get install python-pyaudio

For Python3:

sudo apt-get install python3-pyaudio

Upvotes: 30

danielrosero
danielrosero

Reputation: 614

On Raspbian:

sudo apt-get install python-pyaudio

Upvotes: 9

PartialOrder
PartialOrder

Reputation: 2960

Just for the record for folks using MacPorts and not Homebrew:

$ [sudo] port install portaudio
$ pip install pyaudio --global-option="build_ext"  --global-option="-I/opt/local/include" --global-option="-L/opt/local/lib"

Upvotes: 9

timest
timest

Reputation: 188

on Centos:

yum install -y portaudio portaudio-devel && pip install pyaudio

Upvotes: 8

Related Questions