IPython 基本 'no module named' 错误

IPython Essentia 'no module named' error

我正在尝试使用名为 Essentia 的 Python 模块,该模块用于音频分析。为了使用它,它必须在 Ubuntu 环境中构建,如 here 所述。我做了所有的事情来安装 Essentia 在桌面的文件夹中。

然后在 IPython 中,我尝试导入已安装和构建的 Essentia 模块。我在我的模块所在的文件夹里运行IPython。它不在 /usr/lib/python2.7 中。如上所述,它位于我的桌面上。

但是当我在 IPython 中导入 Essentia 模块时,它告诉我

ImportError: No module named essentia

这里有什么问题?我是否必须在 /usr/lib/python2.7 内构建 Essentia,如果是这样,我该怎么做?还是其他什么地方出了问题?

我遇到了完全相同的问题并且能够解决它。

根据你的问题,我不能 100% 确定你的问题是什么 - 但是,这些是你 - 或其他人 - 可能遇到的几个可能的罪魁祸首。

我也在使用 Python 2.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 file/Notebook。

2。配置和安装

如果您能够成功配置和安装 Essentia,请跳过此步骤。在我最终收到 install finished successfully 消息之前,这些是我遇到的其他值得注意的问题。

如 OP 所述,主要说明是 here

未找到 ffftw3f 或 taglib

我改用 MacPorts 解决了这个问题:

sudo port install fftw-3-single
sudo port install taglib

安装失败

我应该注意到我在安装过程中遇到了一些问题,这让我摆脱了 C++ 测试、Gaia 和 Vamp 插件支持(我需要的 none),方法是从配置中删除这些和其他一些行 (as this has helped other users in the past):

./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 - also thanks to @djmoffat and @justin_salamon.)

我在 Mac OS 10.14.5

上安装时遇到了一些困难

这为我解决了:

  • 使用 conda 创建了一个虚拟环境,Python v3.7
  • 用自制软件安装了 essentia:brew install essentia --HEAD

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

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

import essentia