簡體   English   中英

在樹莓派 3 上運行 librosa 和 numba

[英]running librosa & numba on raspberry pi 3

我正在嘗試在我的 raspberry pi 3 上運行 librosa。在通過互聯網搜索數小時后,我終於能夠安裝它,但是當我嘗試導入它時仍然會引發錯誤。 首先,我在安裝依賴項llvmlite遇到了問題。 我最終使用以下代碼安裝了它: conda install -c numba llvmlite 我使用帶有 miniconda 的 python 3.4 構建。

安裝 llvmlite 后,我可以使用pip安裝 librosa(無法使用 conda)

pi@raspberrypi:~ $ pip install librosa
Collecting librosa
Using cached https://www.piwheels.hostedpi.com/simple/librosa/librosa-
0.5.1-py3-none-any.whl
Requirement already satisfied: resampy>=0.1.2 in 
./miniconda3/lib/python3.4/site-packages (from librosa)
Requirement already satisfied: scipy>=0.13.0 in 
...
Installing collected packages: librosa
Successfully installed librosa-0.5.1

顯然 librosa 已安裝。

pi@raspberrypi:~ $ pip list
DEPRECATION: The default format will switch to columns in the future. 
You can use --format=(legacy|columns) (or define a format=
(legacy|columns) in your pip.conf under the [list] section) to disable 
this warning.
anaconda-client (1.0.2)
audioread (2.1.5)
awscli (1.11.170)
boto3 (1.4.7)
botocore (1.7.28)
clyent (0.4.0)
colorama (0.3.7)
conda (3.16.0)
conda-env (2.4.2)
Cython (0.27.1)
decorator (4.1.2)
docutils (0.14)
jmespath (0.9.3)
joblib (0.11)
librosa (0.5.1)
llvmlite (0.7.0.dev0+21.gcda19bd.dirty)
mock (2.0.0)
numba (0.35.0)
numpy (1.13.3)
pbr (3.1.1)
Pillow (2.9.0)
pip (9.0.1)
protobuf (3.4.0)
pyasn1 (0.3.7)
PyAudio (0.2.11)
pycosat (0.6.1)
pycrypto (2.6.1)    
python-dateutil (2.6.1)
pytz (2015.4)
PyYAML (3.12)
requests (2.7.0)
resampy (0.2.0)
rsa (3.4.2)
s3transfer (0.1.11)
scikit-learn (0.18.2)
scipy (0.19.1)
setuptools (18.1)
six (1.11.0)
tensorflow (1.1.0)
Werkzeug (0.12.2)
wheel (0.30.0)

嘗試導入 librosa 會引發以下錯誤:

pi@raspberrypi:~ $ python
Python 3.4.3 |Continuum Analytics, Inc.| (default, Aug 21 2015, 00:53:08) 
[GCC 4.6.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import librosa
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/pi/miniconda3/lib/python3.4/site-packages/librosa/__init__.py", line 12, in <module>
    from . import core
  File "/home/pi/miniconda3/lib/python3.4/site-packages/librosa/core/__init__.py", line 108, in <module>
    from .time_frequency import *  # pylint: disable=wildcard-import
  File "/home/pi/miniconda3/lib/python3.4/site-packages/librosa/core/time_frequency.py", line 10, in <module>
    from ..util.exceptions import ParameterError
  File "/home/pi/miniconda3/lib/python3.4/site-packages/librosa/util/__init__.py", line 70, in <module>
    from . import decorators
  File "/home/pi/miniconda3/lib/python3.4/site-packages/librosa/util/decorators.py", line 67, in <module>
    from numba.decorators import jit as optional_jit
  File "/home/pi/miniconda3/lib/python3.4/site-packages/numba/__init__.py", line 12, in <module>
    from .special import typeof, prange
  File "/home/pi/miniconda3/lib/python3.4/site-packages/numba/special.py", line 4, in <module>
    from .parfor import prange
  File "/home/pi/miniconda3/lib/python3.4/site-packages/numba/parfor.py", line 20, in <module>
    from numba import array_analysis, postproc, typeinfer
  File "/home/pi/miniconda3/lib/python3.4/site-packages/numba/array_analysis.py", line 9, in <module>
    from numba import ir, analysis, types, config, cgutils, typing
  File "/home/pi/miniconda3/lib/python3.4/site-packages/numba/cgutils.py", line 22, in <module>
    true_bit = bool_t(1)
TypeError: 'IntType' object is not callable
>>> 

嘗試導入 numba 會引發以下錯誤:

pi@raspberrypi:~ $ python
Python 3.4.3 |Continuum Analytics, Inc.| (default, Aug 21 2015, 00:53:08) 
[GCC 4.6.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numba
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/pi/miniconda3/lib/python3.4/site-packages/numba/__init__.py", line 12, in <module>
    from .special import typeof, prange
  File "/home/pi/miniconda3/lib/python3.4/site-packages/numba/special.py", line 4, in <module>
    from .parfor import prange
  File "/home/pi/miniconda3/lib/python3.4/site-packages/numba/parfor.py", line 20, in <module>
    from numba import array_analysis, postproc, typeinfer
  File "/home/pi/miniconda3/lib/python3.4/site-packages/numba/array_analysis.py", line 9, in <module>
    from numba import ir, analysis, types, config, cgutils, typing
  File "/home/pi/miniconda3/lib/python3.4/site-packages/numba/cgutils.py", line 22, in <module>
    true_bit = bool_t(1)
TypeError: 'IntType' object is not callable
>>> 

有沒有人知道問題可能是什么? 我很感激任何提示或提示。 謝謝!!!!

在撰寫本文時,最新的 Raspbian 版本具有 llvm-3.8,因此根據此 github 評論,您需要使用 numba v0.30.1 安裝 llvmlite v0.15.0。 如果您在不同的 llvm 上,那么您將需要探索 llvmlite 和 numba 的版本與該版本的 llvm 一起使用。 以下是讓我設置成功import librosa

sudo apt install libblas-dev llvm python3-pip python3-scipy
virtualenv --system-site-packages -p python3 env
source env/bin/activate
pip install llvmlite==0.15.0
pip install numba==0.30.1
pip install librosa

注意我正在使用 virtualenv 並從系統包中拖入 scipy 和 numpy,否則很難獲得正確的 fortran 和 c 依賴項,而且這些依賴項需要很長時間才能在 RPi 上進行編譯。 如果要在系統范圍內安裝,請刪除第 2 行和第 3 行並將sudo放在pip命令前面。 我還在這個requirements.txt文件中凍結了我的需求,所以如果你下載它,那么你可以運行一個命令pip install -r requirements.txt

sudo pip install librosa==0.4.2對我sudo pip install librosa==0.4.2 有警告但在 Raspberry pi3 上工作正常(操作系統:raspbian-jessie)

謝謝@MatthewBerryman,你讓我克服了困難! 在最新的 Raspian 版本(stretch)上,在嘗試在 Raspian jessie(我的 RPi3 附帶的)上安裝 librosa 經歷了幾個小時的挫折之后,我成功地完成了以下操作。 話雖如此,以下過程也可能適用於 jessie。

首先,使用以下命令更新系統的軟件包列表並將所有已安裝的軟件包升級到最新版本:

sudo apt-get update
sudo apt-get dist-upgrade

安裝 Python 科學堆棧:

sudo pip3 install numpy --upgrade 
sudo apt-get install python3-pandas

(好像還安裝了matplotlib、scipy)

sudo apt-get install python3-sklearn

然后,安裝低級虛擬機 LLVM(根據 @MatthewBerryman,我使用了 llvm 3.8 和 llvmlite 0.15.0,而不是我找不到軟件包的最新組合。)安裝 llvm-3.8 后,一個符號鏈接需要在安裝 llvmlite 之前定義。

sudo apt-get install llvm-3.8
sudo ln -s /usr/bin/llvm-config-3.8 /usr/bin/llvm-config
sudo pip3 install llvmlite==0.15.0
sudo pip3 install numba==0.32.0

Numba 是 0.32.0,因為如果它是最新的(0.36),它不會因為 llvm 不匹配而導入,如果它是較低版本,librosa 安裝會將其升級到最新版本。

最后,安裝 librosa:

sudo pip3 install librosa

但是,在嘗試導入 librosa 時,它仍然拋出並出錯,即

ImportError: libf77blas.so.3: cannot open shared object file: No such file or directory

谷歌搜索這個錯誤表明這可以解決它:

sudo apt-get install libatlas-base-dev

它做到了; 但是,我不知道為什么。

總結一下,這個過程安裝librosa,嘗試這個沒有錯誤:

...$ python3
Python 3.5.3 (default, Jan 19 2017, 14:11:04)
...
>>>import librosa
>>>

https://raspberrypi.stackexchange.com/questions/111697/unable-to-pip-install-librosa-in-raspberry-pi-3-model-b-raspbian-stretch

任何人都可以參考此鏈接,我使用 Raspbian Buster OS 在 RPi 3 B+ 中成功安裝

如果您以前安裝過軟件包,請按照其他人的建議使用新的操作系統副本重新啟動或創建虛擬環境。 第一次嘗試創建虛擬環境對我來說不起作用,您可能想要重新啟動到一個新副本。

然后安裝 virtualenv 並創建一個新的 virtualenv。

使用 python3 激活 virtualenv。

sudo apt-get install llvm

你應該得到 llvm 7.0.x

然后安裝兼容的 llvmlite - 這適用於 7.0。 通過鍵入which llvm-config獲取路徑在我的情況下它是 /usr/bin/llvm-config

LLVM_CONFIG=/usr/bin/llvm-config pip3 install llvmlite==0.32

安裝依賴

pip3 install numpy==1.16.1 numba==0.49
pip3 install librosa

如果在嘗試導入 librosa 后由於 numpy 出現錯誤,請更新依賴項

sudo apt-get install libatlas-base-dev

教程的積分

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM