运行 raspberry pi 3 上的 librosa 和 numba
running librosa & numba on raspberry pi 3
我正尝试在我的 raspberry pi 3 上 运行 librosa。
在互联网上搜索了几个小时后,我终于能够安装它,但是当我尝试导入它时它仍然会抛出错误。首先,我在安装依赖项 llvmlite
时遇到了问题。我最终使用以下代码安装了它:conda install -c numba llvmlite
。我使用 python 3.4 build with miniconda。
安装 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,因此根据 this github comment 您需要安装 llvmlite v0.15.0 和 numba v0.30.1。如果您在不同的 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
谢谢@MatthewBerryman,你让我渡过了难关!在最新的 Raspian 版本(stretch)上,在尝试将 librosa 安装在 Raspian jessie(我的 RPi3 随附)上失败几个小时后,我成功完成了以下操作。话虽如此,以下程序可能也适用于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之前需要定义一个符号link。
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
>>>
sudo pip install librosa==0.4.2
对我有用。有警告但在 Raspberry pi3 上工作正常 (OS:raspbian-jessie)
任何人都可以参考这个 link ,我在 RPi 3 B+ 中成功安装 Raspbian Buster OS
如果您以前安装过软件包,请使用 OS 的全新副本重新启动,或者按照其他人的建议创建一个虚拟环境。第一次创建虚拟环境对我来说没有用,你可能想重新启动到一个新的副本。
然后安装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
如果由于 numpy 而尝试导入 librosa 后出现错误,请更新依赖项
sudo apt-get install libatlas-base-dev
感谢 this 教程
我正尝试在我的 raspberry pi 3 上 运行 librosa。
在互联网上搜索了几个小时后,我终于能够安装它,但是当我尝试导入它时它仍然会抛出错误。首先,我在安装依赖项 llvmlite
时遇到了问题。我最终使用以下代码安装了它:conda install -c numba llvmlite
。我使用 python 3.4 build with miniconda。
安装 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,因此根据 this github comment 您需要安装 llvmlite v0.15.0 和 numba v0.30.1。如果您在不同的 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
谢谢@MatthewBerryman,你让我渡过了难关!在最新的 Raspian 版本(stretch)上,在尝试将 librosa 安装在 Raspian jessie(我的 RPi3 随附)上失败几个小时后,我成功完成了以下操作。话虽如此,以下程序可能也适用于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之前需要定义一个符号link。
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
>>>
sudo pip install librosa==0.4.2
对我有用。有警告但在 Raspberry pi3 上工作正常 (OS:raspbian-jessie)
任何人都可以参考这个 link ,我在 RPi 3 B+ 中成功安装 Raspbian Buster OS
如果您以前安装过软件包,请使用 OS 的全新副本重新启动,或者按照其他人的建议创建一个虚拟环境。第一次创建虚拟环境对我来说没有用,你可能想重新启动到一个新的副本。
然后安装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
如果由于 numpy 而尝试导入 librosa 后出现错误,请更新依赖项
sudo apt-get install libatlas-base-dev
感谢 this 教程