pyaudio could not import _portaudio

Question:

Trying to run python app that uses pyaudio. Using virtualenv and installations are working. However when running it can’t find portaudio. But the _portaudio.so file exists. Any suggestions???

(venv) kidkic@pi-mirror1:~/audio $ jasper/jasper.py 
Could not import the PyAudio C module '_portaudio'.
Traceback (most recent call last):
  File "jasper/jasper.py", line 31, in <module>
    from client.mic import Mic
  File "/home/kidkic/audio/jasper/client/mic.py", line 9, in <module>
    import pyaudio
  File "/home/kidkic/audio/venv/local/lib/python2.7/site-packages/pyaudio.py", line 116, in <module>
    import _portaudio as pa
ImportError: /home/kidkic/audio/venv/local/lib/python2.7/site-packages/_portaudio.so: undefined symbol: Pa_GetStreamReadAvailable


# CHECKING THAT THE FILE EXISTS (a binary file)
(venv) kidkic@pi-mirror1:~/audio $ ls venv/local/lib/python2.7/site-packages/_*
venv/local/lib/python2.7/site-packages/_portaudio.so
Asked By: roady

||

Answers:

The issue isn’t that it can’t find the library, but that the library is missing a function that is needed. (source code). I ran into the same problem, and believe the issue stems from building with the wrong version of portaudio-dev.

What you need to do:

  1. Uninstall python-pyaudio with sudo apt-get purge --remove python-pyaudio if you have it (This is version 0.2.8)
  2. Download the latest version (19) of PortAudio.
  3. Untar and install PortAudio
    • ./configure
    • make
    • make install
  4. Get the dependencies for pyaudio
    • portaudio19-dev
    • python-all-dev (python3-all-dev for Python 3)
  5. sudo pip install pyaudio

After that, I was able to use pyaudio.

Answered By: Wehrdo

For linux users you may get something like this after you install portaudio

Libraries have been installed in:
   /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------


PortAudio was successfully installed.

On some systems (e.g. Linux) you should run 'ldconfig' now
to make the shared object available.  You may also need to
modify your LD_LIBRARY_PATH environment variable to include
the directory /usr/local/lib

So, I would like to add the below commands as step number 4, following the steps in above answer by Wehrdo.

  • sudo ldconfig
  • export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
  • echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/" >> ~/.bashrc
Answered By: jophab

This worked for me

conda install -c anaconda portaudio
Answered By: Sanath

Pip unistall pyaudio
Pipwin install pyaudio
For windows machine

Answered By: Richi Roy

when I install pyaudio with conda, the error comes out. However, it is gone when I just install it with pip by ‘pip install pyaudio’

It seems like a problem in the conda source of this package.

Answered By: Wenjie

The problem is that portaudio and pyaudio are mainly supported for python 2.7, 3.4, 3.5 and 3.6 as of now. At the time you asked the question 2.7 probably wasn’t supported. You always have to check this website: https://pypi.org/project/PyAudio/#files if you want to know which versions of python are compatible. If you want to keep your version of python the same, try this unofficial site for Windows: https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio

Answered By: DARSIN

This is what worked for me on M1 MacBook Pro,

conda install -c anaconda portaudio
pip install pyaudio
Answered By: Mohit
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.