2017-10-15 330 views
1

我想在我的樹莓派3上運行librosa。 經過幾個小時的搜索,我終於可以安裝它了,但是當我嘗試導入它時仍然會報錯。首先,我遇到了安裝依賴項llvmlite的問題。我終於用以下代碼安裝它:conda install -c numba llvmlite 我使用python 3.4 build與miniconda。在樹莓派上運行librosa&numba 3

llvmlite安裝後,我能夠與PIP安裝librosa(不可能暢達)

[email protected]:~ $ 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安裝。

[email protected]:~ $ 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引發以下錯誤,但:

[email protected]:~ $ 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引發以下錯誤:

[email protected]:~ $ 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 
>>> 

有沒有人線索的問題可能是什麼? 我很感激任何提示或提示。 謝謝!!!!!

回答

2

在撰寫本文時,最新發布的Raspbian版本爲llvm-3.8,因此根據this github comment,您需要安裝llvmlite v0.15.0與numba v0.30.1。如果你使用的是不同的llvm,那麼你需要研究llvmlite和numba的版本,以便與該版本的llvm一起使用。 這裏是讓我設置來獲得成功的import librosa的命令:我使用的virtualenv並從系統包SciPy的和numpy的拖動

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 

注意,否則很難得到FORTRAN &Ç依賴還有那些花費很長時間才能在RPi上編譯的問題。如果要安裝系統,請刪除第二行和第三行,並將sudo放在pip命令的前面。我也凍結了我在這個requirements.txt文件中的要求,所以如果你下載它,那麼你可以運行一個命令pip install -r requirements.txt

+0

它的工作。非常感謝! –

+0

我嘗試了這個,但我得到以下:錯誤:root @ raspberrypi:/ home/pi#sudo pip3 install llvmite == 0.15.0 下載/解包llvmite == 0.15.0 找不到滿足要求的任何下載llvmite == 0.15.0 正在清理... 找不到llvmite的所有發行版== 0.15.0 在/root/.pip/pip.log中存儲調試失敗日誌 –

+0

看起來它只是一個錯字,它應該是llvmlite == 0.15.0,但你已經寫了llvmite == 0.15.0 –

0

謝謝@MatthewBerryman,你讓我在駝峯!在最新的Raspian發行版(拉伸版)上,經過幾個小時的試圖讓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 

然後,安裝低級虛擬ma chine,LLVM(per @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 
>>>