无法在 docker 图片中导入 PyAudio 模块

Cannot import PyAudio module in docker image

我正在尝试在 Dockerfile 中使用 pyaudio,但无论我做什么,我都无法导入该模块。

FROM ubuntu:18.04

RUN apt-get update
RUN apt-get install software-properties-common -y
RUN add-apt-repository ppa:deadsnakes/ppa

RUN apt-get install portaudio19-dev -y
RUN apt-get install python3.8 -y
RUN apt-get install python3-pip -y
RUN apt-get install python3-pyaudio -y

RUN python3.8 -m pip install pip setuptools --upgrade

# Install pip modules
RUN python3.8 -m pip install pyaudio==0.2.11

CMD python3.8 -c "import pyaudio"

构建和运行这将给出以下输出:

$ docker build . --tag pyaudio:0.0.1
$ docker run -it pyaudio:0.0.1
Could not import the PyAudio C module '_portaudio'.
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python3/dist-packages/pyaudio.py", line 116, in <module>
    import _portaudio as pa
ModuleNotFoundError: No module named '_portaudio'

这是交互式会话的输出:

root@a037d4310763:/# python3.8 -m pip freeze | grep Audio
PyAudio==0.2.11
root@a037d4310763:/# python3.8
Python 3.8.5 (default, Jul 20 2020, 19:48:14) 
[GCC 7.5.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyaudio
Could not import the PyAudio C module '_portaudio'.
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3/dist-packages/pyaudio.py", line 116, in <module>
    import _portaudio as pa
ModuleNotFoundError: No module named '_portaudio'

我知道我会回来的,所以:

这应该有效

FROM ubuntu:18.04

RUN apt-get update
RUN apt-get install libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 -y
RUN apt-get install python3.8 python3.8-dev python3-pip -y
RUN python3.8 -m pip install pyaudio==0.2.11
CMD python3.8 -c "import pyaudio"