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:
sudo apt-get purge --remove python-pyaudio
si lo tiene (esta es la versión 0.2.8) ./configure
make
make install
portaudio19-dev
python-all-dev
( python3-all-dev
para Python 3 ) 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