Pyaudio, portaudio y mac 10.7.5

Estoy teniendo problemas para instalar pyaudio correctamente. Tengo un virtualenv configurado para el proyecto. Primero intenté instalar el portaudio:

sudo port install portaudio 

que devuelve:

 ---> Cleaning portaudio ---> Scanning binaries for linking errors: 100.0% ---> No broken files found. 

Supongo que eso significa que funcionó bien. Entonces intenté:

 pip install pyaudio 

Que devuelve:

 Downloading/unpacking pyaudio Running setup.py egg_info for package pyaudio warning: no files found matching '*.c' under directory 'test' Installing collected packages: pyaudio Running setup.py install for pyaudio building '_portaudio' extension gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch i386 -arch x86_64 -g -O2 -DNDEBUG -g -O3 -DMACOSX=1 -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/_portaudiomodule.c -o build/temp.macosx-10.6-intel-2.7/src/_portaudiomodule.o -fno-strict-aliasing src/_portaudiomodule.c:29:23: error: portaudio.h: No such file or directory src/_portaudiomodule.c:33:25: error: pa_mac_core.h: No such file or directory ... 

¿Es esa primera advertencia un problema? Estoy un poco sorprendido de que no esté diciendo ningún archivo o directorio para portaudio.h. ¿Tengo que hacer algo especial para habilitar mi instalación de macport de audio de puerto?

Aprecia cualquier ayuda!

 $ brew install portaudio $ pip install pyaudio 

Algunas bibliotecas faltantes y tales que el portaudio proporciona. Funciona para Python 2.7 (no estoy seguro acerca de otras versiones)

¿Qué tal lo siguiente?

 $ sudo port install py27-pyaudio Warning: port definitions are more than two weeks old, consider using selfupdate ---> Computing dependencies for py27-pyaudio ---> Fetching archive for py27-pyaudio ---> Attempting to fetch py27-pyaudio-0.2.7_0.darwin_12.x86_64.tbz2 from http://lil.fr.packages.macports.org/py27-pyaudio ---> Attempting to fetch py27-pyaudio-0.2.7_0.darwin_12.x86_64.tbz2.rmd160 from http://lil.fr.packages.macports.org/py27-pyaudio ---> Installing py27-pyaudio @0.2.7_0 ---> Activating py27-pyaudio @0.2.7_0 ---> Cleaning py27-pyaudio ---> Updating database of binaries: 100.0% ---> Scanning binaries for linking errors: 100.0% ---> No broken files found. $ python -c "import pyaudio" $ 

Esto funciona para mí al menos.

Siguiendo mi comentario anterior, esto es similar a esta respuesta, pero como OP no estuvo claro con eso, lo intentaré de nuevo. (Esto es básicamente un corte y pegado de algunas notas que me hice a mí mismo cuando estaba haciendo esto).

  1. Esta es una comstackción de 32 bits.
  2. Descargue pyaudio y portaudio (utilicé 0.2.4, v19).
  3. cd portaudio
  4. hacer limpia
  5. CC = “gcc -arch i386” ./configure -enable-static
  6. hacer
  7. sudo make install (quizás no sea necesario si lo vincula estáticamente).
  8. Mueva el portaudio al directorio de PyAudio, que es:
    1. cd .. (fuera de portaudio)
    2. mv portaudio PyAudio / portaudio-v19 (tenga en cuenta que necesita la v19 aquí)
  9. Cd en PyAudio y ejecute:
    1. asegúrese de que está en el entorno virtual, es decir, source bin/activate
    2. python setup.py build –static-link
    3. python setup.py install

Puedes instalar portaudio con $ sudo port install portaudio

y puede instalar pyaduio con el instalador de mac desde http://people.csail.mit.edu/hubert/pyaudio/

Esto instalará el portaudio que se requiere para pyaudio:

 sudo port install portaudio 

A continuación, busque el pyaudio macport apropiado para su versión de python

 port search pyaudio 

Supongamos que está usando python27, instale pyaudio como tal:

 sudo port install py27-pyaudio 

Referencias:

¿Cómo instalo PyAudio en virtualenv en Mac OS X 10.7?

Crea un env virtual, actívalo:

 virtualenv env env/bin/activate 

Descarga PyAudio (más reciente en el momento):

 wget -c http://people.csail.mit.edu/hubert/pyaudio/packages/pyaudio-0.2.8.tar.gz tar zxf pyaudio-0.2.8.tar.gz cd PyAudio-0.2.8/ 

Descomprima portaudio dentro de la carpeta PyAudio, renómbrelo a portaudio-v19 y constrúyalo:

 wget -c http://www.portaudio.com/archives/pa_stable_v19_20140130.tgz tar zxf pa_stable_v19_20140130.tgz mv portaudio portaudio-v19 cd portaudio-v19 ./configure make cd ../ 

Volver al directorio de PyAudio:

 export CFLAGS="-I `pwd`/portaudio-v19/include/ -L `pwd`/portaudio-v19/lib/.libs/" python setup.py build --static-link python setup.py install 

¡Eso es todo!

El punto crucial es este comando:

 export CFLAGS="-I `pwd`/portaudio-v19/include/ -L `pwd`/portaudio-v19/lib/.libs/" 

lo que evita que no exista tal error de archivo.

Esto solucionó mi problema, muchas gracias a @tuxdna.

El problema es que el pyaudio configuración de pyaudio ( setup.py ) asume que todos los encabezados necesarios están en /usr/include . Es por eso que funciona con HomeBrew, y no con MacPorts, que generalmente (y limpiamente) pone todo bajo /opt/local .

Los mantenedores de PyAudio han confiado en HomeBrew, y no hay una combinación de opciones en este momento que permita especificar dónde encontrar los encabezados. Al momento de escribir, el código fuente de setup.py solo admite valores predeterminados para Mac OS X.

Para trabajar con MacPorts, es engorroso pero suficiente para crear dos enlaces para comstackr:

 port install portaudio sudo ln -s /opt/local/include/portaudio.h /usr/include sudo ln -s /opt/local/include/pa_mac_core.h /usr/include pip install --user pyaudio # Should now compile fine. 

Los enlaces probablemente deberían eliminarse una vez que la instalación haya terminado.

Probado en Mac OS X 10.10 con Python 2.7 instalado con MacPorts.