15

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
Azat Ibrakov
  • 9,998
  • 9
  • 38
  • 50
roady
  • 597
  • 2
  • 6
  • 20
  • 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. – Wenjie Feb 08 '21 at 15:31

7 Answers7

22

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.

Community
  • 1
  • 1
Wehrdo
  • 560
  • 6
  • 12
  • Thanks, Tried your suggestion `sudo apt-get purge --remove python-pyaudio sudo apt-get autoremove pip uninstall pyaudio wget http://www.portaudio.com/archives/pa_stable_v19_20140130.tgz tar -xf pa_stable_v19_20140130.tgz cd portaudio/ ./configure make clean make sudo make install sudo apt-get install portaudio19-dev python-all-dev pip install pyaudio (Successfully installed pyaudio-0.2.9)` Now getting `Could not import the PyAudio C module '_portaudio'. – roady Apr 21 '16 at 18:30
  • Is there more to that error? e.g. your previous error said that as well, but went on to say "undefined symbol: Pa_GetStreamReadAvailable" – Wehrdo Apr 21 '16 at 18:43
  • Nope: The new error `Could not import the PyAudio C module '_portaudio'. Traceback (most recent call last): File "jasper/jasper.py", line 31, in from client.mic import Mic File "/home/kidkic/audio/jasper/client/mic.py", line 9, in import pyaudio File "/home/kidkic/audio/venv/local/lib/python2.7/site-packages/pyaudio.py", line 116, in import _portaudio as pa ImportError: libportaudio.so.0: cannot open shared object file: No such file or directory` The file `/home/kidkic/audio/venv/local/lib/python2.7/site-packages/_portaudio.so` exists. – roady Apr 21 '16 at 18:51
  • The error now is that it can't find the libportaudio.so.0 file. I don't have access to my pi right now to see where mine is, but a couple thoughts: Do you have LD_LIBRARY_PATH set to include /usr/local/lib? And did you use sudo with "pip install pyaudio", so pip can install into whatever directories it wants to put the libraries? – Wehrdo Apr 21 '16 at 20:51
  • I have LD_LIBRARY_PATH and LD_RUN_PATH in .bashrc . I deactivated virtualenv and installed pip modules and now it works. Seemed to be something weird when using python virtualenv and portaudio maybe, or I'm just doing stuff wrong. thx for the help – roady Apr 26 '16 at 17:21
6

This worked for me

conda install -c anaconda portaudio
Sanath
  • 61
  • 1
  • 4
2

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
jophab
  • 5,356
  • 14
  • 41
  • 60
0

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.

Wenjie
  • 1
0

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

0

This is what worked for me on M1 MacBook Pro,

conda install -c anaconda portaudio
pip install pyaudio
Mohit
  • 1,045
  • 4
  • 18
  • 45
-2

Pip unistall pyaudio Pipwin install pyaudio For windows machine