2017-10-15 290 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 
>>>