IPython Essentia 'no module named' 错误

4
我正在尝试使用一个名为Essentia的Python模块,用于音频分析。为了使用它,必须在Ubuntu环境中构建,如这里所述。我已经完成了安装Essentia并将其安装在桌面上的文件夹中。
然后,在IPython中,我正在尝试导入已安装和构建的Essentia模块。我正在运行IPython,我的模块位于其中。它不在/usr/lib/python2.7中。正如上面提到的那样,它位于我的桌面上。
但是当我在IPython中导入Essentia模块时,它告诉我:
“ImportError:找不到名为essentia的模块。”
问题出在哪里?我是否必须在/usr/lib/python2.7内构建Essentia,如果是,我该如何做?还是其他什么地方出错了?

which -a python 的输出是 /usr/bin/python - vigamage
which -a ipython 的输出是 /usr/local/bin/ipython - vigamage
我正在运行IPython,它位于我的模块所在的文件夹中。我认为您需要告诉/展示我们该文件夹中有什么?您可能需要向上或向下进入一个文件夹,或更改一些内容,以使您的导入语句正常工作。 - user707650
那个文件夹是我的模块所在的位置。里面有模块的waf文件。我已经把那个文件夹放在我的桌面上了。 - vigamage
导入语句为 import essentia - vigamage
显示剩余2条评论
2个回答

4
我有完全相同的问题并且成功解决了。
从你的问题中,我不能百分之百确定你的问题是什么 - 但这是一些可能的罪魁祸首,你或其他人可能会遇到。
我也在使用Python2.7,并希望在IPython / Jupyter Notebook环境中使用Essentia。
1. Essentia位置
这是我猜测你的问题的第一个原因。
如果您已经成功配置和安装了Essentia(否则请参见下文),则Essentia Python文件所在的路径可能为/usr/local/lib/python2.7/site-packages或类似路径,而Python没有查找该路径。为确保它这样做,您可以添加
import sys
sys.path.append("/usr/local/lib/python2.7/site-packages")

将以下文本翻译成中文:

到你的Python脚本的开头。

这对我解决了问题。

你也可以将以下行添加到你的~/.bash_profile中:

export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages/

为了避免在每个想要使用Essentia的Python文件/笔记本中都必须添加此路径,请执行以下操作。
2.配置和安装
如果您已成功配置和安装Essentia,则可以跳过此步骤。这些是我在最终获得“安装成功完成”消息之前遇到的其他值得注意的问题。
正如OP所指出的那样,主要说明在这里
ffftw3f或taglib未找到
我使用MacPorts解决了这个问题:
sudo port install fftw-3-single
sudo port install taglib

安装失败

我应该指出,在安装过程中我遇到了一些问题,因此我通过从配置行中删除C ++测试、Gaia和Vamp插件支持(我都不需要)以及其他一些内容来摆脱它们(如 这对其他用户过去有所帮助)。

./waf configure --mode=release --with-python --with-examples

代替,而不是
./waf configure --mode=release --build-static --with-python --with-cpptests --with-examples --with-vamp --with-gaia

这个操作使得以下错误信息消失了:
Build failed
 -> task in 'standard_fadedetection' failed (exit status 1): 
    {task 4417706448: cxxprogram standard_fadedetection.cpp.5.o -> standard_fadedetection}
['clang++', '-stdlib=libc++', 'src/examples/standard_fadedetection.cpp.5.o', '-o', '/Users/Brecht/Downloads/essentia-2.0.1/build/src/examples/standard_fadedetection', '-Lsrc', '-lessentia', '-L/opt/local/lib', '-L/opt/local/lib', '-L/opt/local/lib', '-L/opt/local/lib', '-L/opt/local/lib', '-L/opt/local/lib', '-L/opt/local/lib', '-L/opt/local/lib', '-lfftw3f', '-lyaml', '-lavformat', '-lavcodec', '-lavutil', '-lswresample', '-lsamplerate', '-ltag']
 -> task in 'streaming_extractor_freesound' failed (exit status 1): 
    {task 4417783952: cxxprogram FreesoundExtractor.cpp.22.o,FreesoundLowlevelDescriptors.cpp.22.o,FreesoundRhythmDescriptors.cpp.22.o,FreesoundSfxDescriptors.cpp.22.o,FreesoundTonalDescriptors.cpp.22.o,streaming_extractor_freesound.cpp.22.o -> streaming_extractor_freesound}
['clang++', '-stdlib=libc++', 'src/examples/freesound/FreesoundExtractor.cpp.22.o', 'src/examples/freesound/FreesoundLowlevelDescriptors.cpp.22.o', 'src/examples/freesound/FreesoundRhythmDescriptors.cpp.22.o', 'src/examples/freesound/FreesoundSfxDescriptors.cpp.22.o', 'src/examples/freesound/FreesoundTonalDescriptors.cpp.22.o', 'src/examples/streaming_extractor_freesound.cpp.22.o', '-o', '/Users/Brecht/Downloads/essentia-2.0.1/build/src/examples/streaming_extractor_freesound', '-Lsrc', '-lessentia', '-L/opt/local/lib', '-L/opt/local/lib', '-L/opt/local/lib', '-L/opt/local/lib', '-L/opt/local/lib', '-L/opt/local/lib', '-L/opt/local/lib', '-L/opt/local/lib', '-lfftw3f', '-lyaml', '-lavformat', '-lavcodec', '-lavutil', '-lswresample', '-lsamplerate', '-ltag']

让我知道那个解决方案如何运作 - 我有一种感觉,我已经遇到了你可能会遇到的所有错误。
致谢:我之所以能够这么快地解决问题,主要是因为this thread - 还要感谢@djmoffat@justin_salamon

0

我在Mac OS 10.14.5上安装时遇到了一些困难

这是我的解决方法:

  • 使用conda创建虚拟环境,Python版本为v3.7
  • 使用homebrew安装essentia:brew install essentia --HEAD

之后,我查找了Homebrew放置网站包的位置,并使用以下代码在Jupyter笔记本中导入和使用essentia:

import sys
sys.path.append("/usr/local/homebrew/lib/python3.7/site-packages")

import essentia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接