Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

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
                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 8, 2021 at 15:31

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:

  • Uninstall python-pyaudio with sudo apt-get purge --remove python-pyaudio if you have it (This is version 0.2.8)
  • Download the latest version (19) of PortAudio.
  • Untar and install PortAudio
  • ./configure
  • make install
  • Get the dependencies for pyaudio
  • portaudio19-dev
  • python-all-dev (python3-all-dev for Python 3)
  • sudo pip install pyaudio
  • After that, I was able to use pyaudio.

    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, 2016 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, 2016 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 <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: 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, 2016 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, 2016 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, 2016 at 17:21 I was using < conda install pyaudio> . But for some reason, it was not working. This worked, finally. – Rima Dec 2, 2020 at 6:28

    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
  • 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.

    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