我有完全相同的问题并且成功解决了。
从你的问题中,我不能百分之百确定你的问题是什么 - 但这是一些可能的罪魁祸首,你或其他人可能会遇到。
我也在使用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。)
which -a python
的输出是/usr/bin/python
。 - vigamagewhich -a ipython
的输出是/usr/local/bin/ipython
。 - vigamageimport essentia
- vigamage