web-dev-qa-db-ja.com

pyaudioは_portaudioをインポートできませんでした

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
9
roady

問題は、ライブラリが見つからないことではなく、ライブラリに必要な機能がないことです。 ( ソースコード )。私は同じ問題に遭遇しました、そして問題はportaudio-devの間違ったバージョンで構築することに起因すると信じています。

するべきこと:

  1. Python-pyaudioがある場合は、Sudo apt-get purge --remove python-pyaudioを使用してアンインストールします(これはバージョン0.2.8です)
  2. ダウンロード PortAudioの最新バージョン(19)。
  3. PortAudio を解凍してインストールします
    • ./configure
    • make
    • make install
  4. Pyaudio の依存関係を取得します
    • portaudio19-dev
    • python-all-devpython3-all-dev forPython 3
  5. Sudo pip install pyaudio

その後、pyaudioを使用できるようになりました。

7
Wehrdo

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
1
jophab

これは私のために働いた

conda install -c anaconda portaudio
0
Sanath