pyaudio 无法导入 _portaudio
Posted
技术标签:
【中文标题】pyaudio 无法导入 _portaudio【英文标题】:pyaudio could not import _portaudio 【发布时间】:2016-08-09 11:22:51 【问题描述】:尝试运行使用 pyaudio 的 python 应用程序。使用 virtualenv 和安装工作正常。但是运行时找不到portaudio。但是 _portaudio.so 文件存在。有什么建议吗???
(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 <module>
from client.mic import Mic
File "/home/kidkic/audio/jasper/client/mic.py", line 9, in <module>
import pyaudio
File "/home/kidkic/audio/venv/local/lib/python2.7/site-packages/pyaudio.py", line 116, in <module>
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
【问题讨论】:
当我用 conda 安装 pyaudio 时,错误就出来了。但是,当我通过 'pip install pyaudio' 使用 pip 安装它时它就消失了。这似乎是这个包的 conda 源中的问题。 【参考方案1】:问题不在于找不到库,而在于库缺少所需的功能。 (source code)。我遇到了同样的问题,并且认为问题源于使用错误版本的 portaudio-dev
构建。
你需要做什么:
-
如果你有
sudo apt-get purge --remove python-pyaudio
卸载 python-pyaudio(这是 0.2.8 版)
Download PortAudio 最新版本(19)。
解压并安装 PortAudio
./configure
make
make install
获取 pyaudio 的依赖项
portaudio19-dev
python-all-dev
(python3-all-dev
代表 Python 3)
sudo pip install pyaudio
之后,我就可以使用pyaudio了。
【讨论】:
谢谢,尝试了你的建议sudo apt-get purge --remove python-pyaudio sudo apt-get autoremove pip uninstall pyaudio wget http://www.portaudio.com/archives/pa_stable_v19_20140130.tgz tar -xf pa_stable_v19_20140130.tgz cd portaudio/ ./configure make clean make sudo make install sudo apt-get install portaudio19-dev python-all-dev pip install pyaudio (Successfully installed pyaudio-0.2.9)
现在得到`Could not import the PyAudio C module '_portaudio'。
这个错误还有更多吗?例如你之前的错误也这么说,但接着说“未定义的符号:Pa_GetStreamReadAvailable”
否:新错误Could not import the PyAudio C module '_portaudio'. Traceback (most recent call last): File "jasper/jasper.py", line 31, in <module> from client.mic import Mic File "/home/kidkic/audio/jasper/client/mic.py", line 9, in <module> import pyaudio File "/home/kidkic/audio/venv/local/lib/python2.7/site-packages/pyaudio.py", line 116, in <module> import _portaudio as pa ImportError: libportaudio.so.0: cannot open shared object file: No such file or directory
文件/home/kidkic/audio/venv/local/lib/python2.7/site-packages/_portaudio.so
存在。
现在的错误是找不到libportaudio.so.0文件。我现在无法访问我的 pi 来查看我的位置,但有几个想法:您是否将 LD_LIBRARY_PATH 设置为包含 /usr/local/lib?您是否将 sudo 与“pip install pyaudio”一起使用,所以 pip 可以安装到它想要放置库的任何目录中?
我在 .bashrc 中有 LD_LIBRARY_PATH 和 LD_RUN_PATH 。我停用了 virtualenv 并安装了 pip 模块,现在它可以工作了。使用 python virtualenv 和 portaudio 时似乎有些奇怪,或者我只是做错了。谢谢帮助【参考方案2】:
对于 linux 用户,您在安装 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 (e.g. 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
所以,我想按照 Wehrdo 上述回答中的步骤,将以下命令添加为第 4 步。
sudo ldconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/" >> ~/.bashrc
【讨论】:
【参考方案3】:这对我有用
conda install -c anaconda portaudio
【讨论】:
你能解释一下你做了什么以及为什么? 我正在使用Pip 卸载 pyaudio Pipwin 安装 pyaudio 对于windows机器
【讨论】:
【参考方案5】:当我用 conda 安装 pyaudio 时,错误就出来了。但是,当我通过 'pip install pyaudio' 使用 pip 安装它时它就消失了
这个包的 conda 源似乎有问题。
【讨论】:
欢迎来到 ***!【参考方案6】:问题是目前python 2.7、3.4、3.5和3.6主要支持portaudio和pyaudio。在您提出问题时,可能不支持 2.7。如果你想知道哪些版本的 python 是兼容的,你总是必须查看这个网站:https://pypi.org/project/PyAudio/#files。如果你想保持你的 python 版本不变,试试这个非官方的 Windows 站点:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio
【讨论】:
以上是关于pyaudio 无法导入 _portaudio的主要内容,如果未能解决你的问题,请参考以下文章
AttributeError:找不到 PyAudio;检查安装...无法使用语音识别
Mac M1 无法安装 PyAudio / 尝试了 *** 中建议的所有答案 [重复]
我无法在 Windows 上安装 pyaudio?如何解决“错误:需要 Microsoft Visual C++ 14.0。”?