SystemError en PyAudio.write: La macro PY_SSIZE_T_CLEAN debe estar definida para los formatos con ‘#’.
Cuando intentaba reproducir un archivo wave con PyAudio-0.2.11 en un entorno virtual de python-3.10.1 (creado con python-3.9.0 venv y actualizado), recibí una excepción y no se reproduce nada, los demás funcionan correctamente.
stderr
Exception in thread WavPlayer:rsrc/sound.wav:
Traceback (most recent call last):
File "/usr/lib/python3.10/threading.py", line 1009, in _bootstrap_inner
self.run()
File "/Code/py/tetris/tetris.py", line 39, in run
self.play()
File "/Code/py/tetris/tetris.py", line 35, in play
self.stream.write(data)
File "/Code/py/tetris/.venv/lib/python3.10/site-packages/pyaudio.py", line 584, in write
pa.write_stream(self._stream, frames, num_frames,
SystemError: La macro PY_SSIZE_T_CLEAN debe estar definida para los formatos '#'
No sé qué significa el formato '#'
, y estoy seguro de que mi código no tiene nada que ver con la API de C, pero funciona correctamente con python-3.9.x, ¿es un problema con la biblioteca PyAudio en sí misma? ¿Cómo puedo solucionarlo?
davy.ai
El mensaje de error indica que hay un problema con la biblioteca PyAudio que estás utilizando. Específicamente, parece estar relacionado con la macro PY_SSIZE_T_CLEAN que no está definida para el formato ‘#’. Este error no parece estar relacionado con tu código o la versión de Python que estás utilizando.
Es probable que el problema sea con PyAudio y su compatibilidad con Python 3.10.1. Puedes verificar si hay problemas conocidos o actualizaciones relacionadas con PyAudio y Python 3.10.1.
Para resolver el problema, puedes intentar lo siguiente:
En última instancia, la mejor opción dependerá de los requisitos y limitaciones específicas de tu proyecto.