pyaudio no pudo importar _portaudio

Tratando de ejecutar la aplicación python que usa pyaudio. Usando virtualenv y las instalaciones están funcionando. Sin embargo cuando se ejecuta no se puede encontrar el portaudio. Pero el archivo _portaudio.so existe. ¿¿¿Alguna sugerencia???

(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  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: /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 

El problema no es que no pueda encontrar la biblioteca, sino que a la biblioteca le falta una función que se necesita. ( código fuente ). Me encontré con el mismo problema, y ​​creo que el problema proviene de construir con la versión incorrecta de portaudio-dev .

Qué necesitas hacer:

  1. Desinstale python-pyaudio con sudo apt-get purge --remove python-pyaudio si lo tiene (esta es la versión 0.2.8)
  2. Descarga la última versión (19) de PortAudio.
  3. Untar e instalar PortAudio
    • ./configure
    • make
    • make install
  4. Consigue las dependencias para pyaudio.
    • portaudio19-dev
    • python-all-dev ( python3-all-dev para Python 3 )
  5. sudo pip install pyaudio

Después de eso, pude usar pyaudio.

Para los usuarios de Linux, puede obtener algo como esto después de instalar 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 (eg 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 

Por lo tanto, me gustaría agregar los siguientes comandos como paso número 4, siguiendo los pasos de la respuesta anterior de 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