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
問題は、ライブラリが見つからないことではなく、ライブラリに必要な機能がないことです。 ( ソースコード )。私は同じ問題に遭遇しました、そして問題はportaudio-dev
の間違ったバージョンで構築することに起因すると信じています。
するべきこと:
Sudo apt-get purge --remove python-pyaudio
を使用してアンインストールします(これはバージョン0.2.8です)./configure
make
make install
portaudio19-dev
python-all-dev
(python3-all-dev
forPython 3)Sudo pip install pyaudio
その後、pyaudioを使用できるようになりました。
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
これは私のために働いた
conda install -c anaconda portaudio